liminfo

Scikit-learn Reference

Scikit-learn 머신러닝 레퍼런스

41개 결과

Scikit-learn Reference 소개

이 Scikit-learn 레퍼런스는 scikit-learn 머신러닝 라이브러리의 핵심 클래스와 함수를 다루는 검색 가능한 치트시트입니다. 분류, 회귀, 클러스터링, 전처리, 특성선택, 모델평가, 파이프라인, 하이퍼파라미터 튜닝의 여덟 가지 카테고리로 구성되어 있어 Python ML 워크플로의 근간을 이루는 API 패턴에 즉시 접근할 수 있습니다.

Scikit-learn은 일관된 추정기(estimator) 인터페이스를 제공합니다: 모든 모델이 fit(), predict(), score() 메서드를 노출하므로 코드 구조를 변경하지 않고 알고리즘을 교체할 수 있습니다. 이 레퍼런스는 RandomForestClassifier, LogisticRegression, SVC, GradientBoostingClassifier 등의 예제를 나란히 보여주고, 해당 회귀 모델도 함께 제시하여 그 통일성을 반영합니다. API 시그니처와 기본 하이퍼파라미터를 한눈에 비교할 수 있어 문서 페이지를 오가는 시간을 줄여줍니다.

개별 추정기 외에도 모델 학습을 둘러싼 전처리 및 평가 인프라를 다룹니다. StandardScaler, MinMaxScaler, OneHotEncoder, SimpleImputer 항목이 데이터 준비를 다루고, accuracy_score, classification_report, confusion_matrix, r2_score 같은 메트릭이 모델 성능을 평가합니다. Pipeline과 ColumnTransformer는 전처리와 모델링을 하나의 재현 가능한 단위로 캡슐화하여 데이터 누수를 방지하며, GridSearchCV와 RandomizedSearchCV는 교차 검증을 통한 하이퍼파라미터 최적화를 자동화합니다.

주요 기능

  • 분류 알고리즘 — RandomForest, LogisticRegression, SVC, KNN, GradientBoosting, DecisionTree의 fit/predict API
  • 회귀 모델 — LinearRegression, Ridge, Lasso, ElasticNet, RandomForestRegressor, SVR
  • 클러스터링 방법 — KMeans, DBSCAN, AgglomerativeClustering, 클러스터 품질 평가를 위한 silhouette_score
  • 전처리 도구 — StandardScaler, MinMaxScaler, LabelEncoder, OneHotEncoder, train_test_split, SimpleImputer
  • 특성 선택 기법 — SelectKBest, 차원 축소를 위한 PCA, RFE, feature_importances_ 검사
  • 모델 평가 메트릭 — accuracy_score, classification_report, confusion_matrix, cross_val_score, MSE, R2 점수
  • 파이프라인 구성 — Pipeline, make_pipeline, 혼합 타입 데이터를 위한 ColumnTransformer, FeatureUnion
  • 하이퍼파라미터 튜닝 — GridSearchCV, RandomizedSearchCV, best_params_, 학습 곡선, 검증 곡선, joblib을 이용한 모델 저장

자주 묻는 질문

이 레퍼런스는 어떤 scikit-learn 버전을 다루나요?

scikit-learn 1.x API를 사용합니다. OneHotEncoder의 sparse_output=False(이전 버전의 sparse 대체) 같은 세부 사항이 현재 API를 반영합니다. 모든 예제는 scikit-learn 1.2 이상, Python 3.9 이상과 호환됩니다.

RandomForest와 GradientBoosting 중 어떤 것을 선택해야 하나요?

RandomForest는 트리를 독립적으로 병렬 학습하여 피팅이 빠르고 노이즈가 있는 데이터에서 과적합 경향이 적습니다. GradientBoosting은 트리를 순차적으로 학습하여 이전 트리의 오류를 수정하므로 더 높은 정확도를 얻을 수 있지만 느리고 하이퍼파라미터에 민감합니다. 빠른 베이스라인에는 RandomForest로 시작하고, 성능을 더 끌어올려야 할 때 GradientBoosting(또는 XGBoost/LightGBM)을 시도하세요.

StandardScaler와 MinMaxScaler는 언제 구분해서 사용하나요?

StandardScaler는 데이터를 평균 0, 분산 1로 중심화하며 특성이 대략 정규분포를 따를 때 잘 작동합니다. 특성 크기에 민감한 알고리즘(SVM, 로지스틱 회귀, PCA)에 필수입니다. MinMaxScaler는 [0, 1] 범위로 재조정하며 경계 값이 필요하거나 강한 이상치가 없는 데이터에 유용합니다.

scikit-learn에서 Pipeline의 목적은 무엇인가요?

Pipeline은 전처리 단계와 최종 추정기를 fit()과 predict()를 노출하는 단일 객체로 연결합니다. 스케일링이나 인코딩 같은 변환이 훈련 데이터에서만 학습되고 테스트 데이터에 일관되게 적용되도록 하여 데이터 누수를 방지합니다. 전체 워크플로가 하나의 추정기로 취급되므로 교차 검증과 하이퍼파라미터 탐색도 단순화됩니다.

cross_val_score와 수동 train/test split은 어떻게 다른가요?

cross_val_score는 k-fold 교차 검증을 수행하여 데이터를 k개의 폴드로 분할하고 k번 학습/평가합니다. 매번 다른 폴드를 테스트 세트로 사용합니다. 모든 데이터 포인트가 정확히 한 번 테스트 세트에 포함되므로 단일 train/test split보다 모델 성능에 대한 더 안정적인 추정을 제공하여 평가 메트릭의 분산을 줄입니다.

GridSearchCV와 RandomizedSearchCV의 차이는 무엇인가요?

GridSearchCV는 지정된 그리드의 모든 하이퍼파라미터 조합을 전수 탐색하여 최적 조합을 보장하지만 그리드가 커지면 계산 비용이 급격히 증가합니다. RandomizedSearchCV는 매개변수 분포에서 고정 수의 랜덤 조합을 샘플링하여 큰 탐색 공간에서 훨씬 빠르면서도 좋은 설정을 찾습니다.

scikit-learn에서 범주형 특성은 어떻게 처리하나요?

타겟 변수에는 LabelEncoder(레이블의 순서 인코딩)를, 순서 관계가 없는 입력 특성에는 OneHotEncoder를 사용합니다. 숫자와 범주형 컬럼이 혼합된 데이터셋에서는 ColumnTransformer로 숫자 컬럼에 StandardScaler, 범주형 컬럼에 OneHotEncoder를 적용하여 하나의 Pipeline 안에서 처리합니다.

학습된 모델을 저장하고 불러오려면 어떻게 하나요?

joblib.dump(model, "model.pkl")로 학습된 모델을 디스크에 직렬화하고, joblib.load("model.pkl")로 복원합니다. joblib은 큰 NumPy 배열을 포함하는 객체(트리 기반 모델 등)에서 pickle보다 효율적입니다. 새 데이터에 대한 일관된 예측을 보장하려면 전처리를 포함한 전체 Pipeline을 저장하세요.