Scikit-learn (사이킷런)

Scikit-learn은 파이썬에서 머신러닝을 위한 대표적인 라이브러리로, 다양한 머신러닝 알고리즘을 간편하게 활용할 수 있도록 지원합니다.

1. 특징

  • 간편한 사용: 직관적인 API 제공으로 쉽게 학습 및 활용 가능
  • 다양한 알고리즘 지원: 지도학습, 비지도학습, 군집화, 차원 축소 등 포함
  • 사전 처리 기능 제공: 데이터 정규화, 결측치 처리, 특성 공학 등
  • 모델 평가 및 튜닝 기능: 교차 검증, 하이퍼파라미터 튜닝 지원
  • 확장성: NumPy, Pandas, SciPy 등과 호환

2. 주요 기능

① 지도 학습 (Supervised Learning)

  • 회귀 (Regression)
    • LinearRegression (선형 회귀)
    • Ridge, Lasso (정규화 회귀)
    • SVR (서포트 벡터 회귀)
    • RandomForestRegressor, GradientBoostingRegressor
  • 분류 (Classification)
    • LogisticRegression (로지스틱 회귀)
    • SVC (서포트 벡터 머신)
    • RandomForestClassifier, GradientBoostingClassifier
    • KNeighborsClassifier (KNN)
    • MLPClassifier (다층 퍼셉트론 신경망)

② 비지도 학습 (Unsupervised Learning)

  • 클러스터링 (Clustering)
    • KMeans
    • DBSCAN
    • AgglomerativeClustering (계층적 군집화)
  • 차원 축소 (Dimensionality Reduction)
    • PCA (주성분 분석)
    • t-SNE, UMAP (비선형 차원 축소)

③ 데이터 전처리 (Preprocessing)

  • StandardScaler (표준화)
  • MinMaxScaler (정규화)
  • OneHotEncoder (범주형 데이터 변환)
  • SimpleImputer (결측치 처리)

④ 모델 평가 및 선택 (Model Selection & Evaluation)

  • train_test_split() (데이터 분할)
  • cross_val_score() (교차 검증)
  • GridSearchCV, RandomizedSearchCV (하이퍼파라미터 최적화)
  • classification_report, confusion_matrix (분류 평가)
  • mean_squared_error, r2_score (회귀 평가)

3. 예제 코드

1) 데이터 로드 및 분할

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# 데이터 로드
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)

2) 모델 학습 및 평가

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 모델 생성 및 학습
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 예측 및 평가
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")

3) 하이퍼파라미터 튜닝

from sklearn.model_selection import GridSearchCV

# 하이퍼파라미터 설정
param_grid = {'n_estimators': [50, 100, 150], 'max_depth': [3, 5, 7]}
grid_search = GridSearchCV(RandomForestClassifier(random_state=42), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# 최적의 하이퍼파라미터 출력
print(grid_search.best_params_)

4. 활용 분야

  • 금융: 신용 평가, 사기 탐지
  • 의료: 질병 진단, 유전자 분석
  • 마케팅: 고객 분류, 추천 시스템
  • 제조: 품질 검사, 예측 유지보수

5. 주요 모듈 소개

sklearn- 데이터 전처리

데이터 가공과 변환을 위한 도구 제공

모듈설명상세예시
preprocessing다양한 데이터 전처리변환, 정규화, 스케일링 등– StandardScaler – MinMaxScaler – OneHotEncoder
feature_selection특징(feature) 선택중요한 특성을 선택– SelectKBest – f_classif
feature_extraction특징(feature) 추출벡터화 (텍스트, 이미지)– TfidfVectorizer – PatchExtractor

sklearn – 다양한 모델

다양한 머신 러닝 알고리즘 제공

모듈설명예시
linear_model다양한 선형 모델선형 회귀, Ridge, Lasso, 로지스틱 회귀 등
svm서포트 벡터 머신 알고리즘SVC, SVR 등
neighbors최근접 이웃 알고리즘kNN 등
naive_bayes나이브 베이즈 알고리즘가우시안 NB, 다항 분포 NB 등
tree의사 결정 트리 알고리즘의사결정나무 분류, 회귀 등
cluster클러스터링 알고리즘kMeans, 계층형 클러스터링, DBSCAN 등
decomposition차원 축소 관련 알고리즘PCA, NMF, Truncated SVD 등
ensemble앙상블 알고리즘VotingClassifier, Random Forest, AdaBoost, GradientBoost 등

sklearn – 모델 평가와 최적화

모델 성능 평가및 하이퍼파라미터 최적화 기법

모듈설명예시
model_selection교차검증, 학습/테스트 분리, 파라미터 최적화train_test_split, GridSearch 등
metrics다양한 성능 측정 방법Accuracy, Precision, Recall, ROC-AUC, RMSE 등

scikit-learn – 유틸리티

데이터 파이프라인, 예제 데이터셋 등

모듈설명예시
sklearn.pipeline여러 기능을 묶어서 실행
sklearn.datasets내장된 다양한 예제 데이터셋붓꽃, 당뇨병, 와인 데이터셋 등

scikit-learn은 머신러닝을 쉽게 시작할 수 있는 강력한 라이브러리입니다.

Leave a Comment