scikit-learn 은 머신러닝에서 사용되는 패키지입니다
사이킷런(Scikit-learn)은 파이썬으로 작성된 머신러닝 라이브러리로, 데이터 마이닝과 데이터 분석을 위한 다양한 도구들을 제공합니다. Scikit-learn은 다양한 알고리즘과 도구를 제공하여 데이터 전처리, 모델 구축, 평가, 선택 등의 과정을 효율적으로 수행할 수 있게 해줍니다.
주요 특징 및 장점
광범위한 알고리즘
- 분류(Classification): SVM, k-NN, 랜덤 포레스트, 로지스틱 회귀, 나이브 베이즈 등 다양한 분류 알고리즘을 제공합니다.
- 회귀(Regression): 선형 회귀, 리지 회귀, 라쏘 회귀, 결정 트리 등 다양한 회귀 알고리즘을 지원합니다.
- 클러스터링(Clustering): K-평균, DBSCAN, 계층적 클러스터링 등 다양한 클러스터링 기법을 포함하고 있습니다.
- 차원 축소(Dimensionality Reduction): PCA, LDA, t-SNE 등 차원 축소 기법을 통해 고차원 데이터를 저차원으로 변환할 수 있습니다.
사용하기 쉬운 API
- 일관된 API 디자인으로 모든 알고리즘과 도구를 동일한 방식으로 사용할 수 있습니다.
- fit, predict, transform, fit_transform 등의 메소드를 통해 학습, 예측, 변환을 쉽게 수행할 수 있습니다.
효율적인 데이터 전처리
- 스케일링(Scaling): StandardScaler, MinMaxScaler 등을 통해 데이터 스케일링을 쉽게 수행할 수 있습니다.
- 누락값 처리(Imputation): SimpleImputer를 사용하여 누락된 값을 쉽게 처리할 수 있습니다.
- 카테고리형 데이터 처리: OneHotEncoder, LabelEncoder 등을 통해 범주형 데이터를 처리할 수 있습니다.
모델 평가 및 선택
- 교차 검증(Cross-Validation): cross_val_score, GridSearchCV, RandomizedSearchCV 등을 통해 모델의 성능을 평가하고 최적의 하이퍼파라미터를 찾을 수 있습니다.
- 평가 지표(Metrics): 분류, 회귀, 클러스터링 등에 대한 다양한 평가 지표(accuracy, precision, recall, f1-score, roc_auc, mean_squared_error, silhouette_score 등)를 제공합니다.
파이프라인(Pipeline)
- 여러 전처리 및 모델링 단계를 하나의 객체로 결합하여 일관성 있는 워크플로우를 만들 수 있습니다. 이를 통해 코드의 재사용성과 가독성을 높일 수 있습니다.
- 아래 코드는 여러 전처리 과정을 하나의 파이프라인(Pipeline)으로 만들어 전처리 과정을 한번에 수행하도록 하는 코드입니다.
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
num_pipeline = Pipeline([
("imputer", SimpleImputer(strategy="median")),
("scaler", StandardScaler())
])
X_train = num_pipeline.fit_transform(train_data)
X_train
or
cat_pipeline = Pipeline([
("ordinal_encoder", OrdinalEncoder()),
("imputer", SimpleImputer(strategy="most_frequent")),
("cat_encoder", OneHotEncoder(sparse_output=False)),
])
X_train = cat_pipeline.fit_transform(train_data)
X_train
파이프라인 합치기
- 파이프라인을 여러개 만들어 하나의 파이프라인으로 합칠수도 있습니다.
- 아래 코드는 여러 전처리 과정이 각각 담긴 2개의 파이프라인(Pipeline)을 하나의 파이프라인으로 만드는 코드입니다.
from sklearn.compose import ColumnTransformer
num_attribs = ["Age", "SibSp", "Parch", "Fare"]
cat_attribs = ["Pclass", "Sex", "Embarked"]
preprocess_pipeline = ColumnTransformer([
("num", num_pipeline, num_attribs),
("cat", cat_pipeline, cat_attribs),
])
확장성
- Scikit-learn은 다른 데이터 과학 라이브러리와 잘 통합됩니다.
-예를 들어, Pandas, NumPy, SciPy와 함께 사용하여 데이터 처리와 분석을 효율적으로 수행할 수 있습니다.
- Joblib을 사용하여 병렬 처리를 지원하므로 대용량 데이터 처리에 효율적입니다.
설치 및 기본 사용 예제
pip install scikit-learn
기본 사용 예제 코드
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 데이터 로드
iris = load_iris()
X, y = iris.data, iris.target
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 데이터 스케일링
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
# 평가
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')
사용된 주요 모듈
sklearn.datasets
- 예제 데이터셋을 제공하고, 외부 데이터셋을 로드하는 데 유용합니다.
- 예: load_iris, load_digits, fetch_20newsgroups, make_classification
sklearn.model_selection
- 데이터 분할, 교차 검증, 하이퍼파라미터 튜닝 등을 위한 도구를 제공합니다.
- 예: train_test_split, cross_val_score, GridSearchCV, RandomizedSearchCV
sklearn.preprocessing
- 데이터 전처리를 위한 도구를 제공합니다.
- 예: StandardScaler, MinMaxScaler, LabelEncoder, OneHotEncoder, PolynomialFeatures
sklearn.linear_model
- 선형 모델을 포함합니다.
- 예: LinearRegression, LogisticRegression, Ridge, Lasso
sklearn.ensemble
- 앙상블 방법을 포함합니다.
- 예: RandomForestClassifier, GradientBoostingClassifier, AdaBoostClassifier
sklearn.metrics
- 모델의 성능을 평가하기 위한 다양한 지표를 제공합니다.
- 예: accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
sklearn.pipeline
- 여러 전처리 및 모델링 단계를 결합할 수 있는 파이프라인을 제공합니다.
- 예: Pipeline
sklearn.decomposition
- 차원 축소 기법을 포함합니다.
- 예: PCA, NMF, TruncatedSVD
sklearn.cluster
- 클러스터링 알고리즘을 포함합니다.
- 예: KMeans, DBSCAN, AgglomerativeClustering
sklearn.svm
- 서포트 벡터 머신 알고리즘을 포함합니다.
- 예: SVC, SVR
'AI > Machine Learning' 카테고리의 다른 글
머신러닝 - 모델 훈련, 선형회귀, 경사하강법 (0) | 2024.08.14 |
---|---|
머신러닝 - 로지스틱 회귀 (0) | 2024.08.14 |
여러 개의 레이블을 갖는 하나의 데이터 분류하기 - 다중 레이블 분류 (2) | 2024.07.08 |
머신러닝 분류 (숫자 예측) (0) | 2024.07.07 |
머신러닝 모델 튜닝하기 (0) | 2024.06.28 |