데이터분석 테스트를 위한 Scikit-Learn 치팅시트

TrainToGPB·2024년 10월 5일
0

Cheat Sheet

목록 보기
3/4
post-thumbnail

취준을 하다보면 가끔 closed book으로 데이터 분석 테스트를 요구하는 회사들이 있다.
그런 테스트를 대비하기 위한 주요 패키지들의 빈출 함수 및 메서드에 대한 치팅시트를 만들어 보았다.
물론 직접 만들지는 않았고, ChatGPT-o1이 만들어줬으니 사용하실 분들은 얼마든지 사용하시길!


Scikit-learn (sklearn) 치트 시트: 데이터 분석 테스트를 위한 필수 기능


📦 데이터 전처리

데이터 분할

from sklearn.model_selection import train_test_split

# 특성과 타겟 변수 분리
X = df.drop('타겟컬럼명', axis=1)
y = df['타겟컬럼명']

# 훈련 세트와 테스트 세트로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

스케일링

from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 표준화 스케일러
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 최소-최대 스케일러
minmax_scaler = MinMaxScaler()
X_train_scaled = minmax_scaler.fit_transform(X_train)
X_test_scaled = minmax_scaler.transform(X_test)

인코딩

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

# 라벨 인코딩
le = LabelEncoder()
y_encoded = le.fit_transform(y)

# 원-핫 인코딩
ohe = OneHotEncoder(sparse=False)
X_encoded = ohe.fit_transform(X[['범주형컬럼명']])

🔍 특징 선택 및 추출

from sklearn.feature_selection import SelectKBest, chi2

# 카이제곱 통계량을 사용한 특징 선택
selector = SelectKBest(score_func=chi2, k=10)
X_new = selector.fit_transform(X, y)

🤖 모델 훈련

지도 학습 모델

회귀 모델

from sklearn.linear_model import LinearRegression

# 선형 회귀 모델 생성 및 훈련
model = LinearRegression()
model.fit(X_train, y_train)

분류 모델

from sklearn.ensemble import RandomForestClassifier

# 랜덤 포레스트 분류 모델 생성 및 훈련
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

비지도 학습 모델

from sklearn.cluster import KMeans

# K-평균 클러스터링
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)

📈 모델 예측

# 예측 수행
y_pred = model.predict(X_test)

📊 모델 평가

회귀 평가 지표

from sklearn.metrics import mean_squared_error, r2_score

# 평균 제곱 오차
mse = mean_squared_error(y_test, y_pred)

# R^2 점수
r2 = r2_score(y_test, y_pred)

분류 평가 지표

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, classification_report

# 정확도
accuracy = accuracy_score(y_test, y_pred)

# 정밀도
precision = precision_score(y_test, y_pred, average='macro')

# 재현율
recall = recall_score(y_test, y_pred, average='macro')

# F1 점수
f1 = f1_score(y_test, y_pred, average='macro')

# 혼동 행렬
cm = confusion_matrix(y_test, y_pred)

# 분류 보고서
report = classification_report(y_test, y_pred)

🔄 교차 검증

from sklearn.model_selection import cross_val_score

# 교차 검증 점수 계산
scores = cross_val_score(model, X, y, cv=5)

# 평균 점수
mean_score = scores.mean()

🛠 하이퍼파라미터 튜닝

그리드 서치

from sklearn.model_selection import GridSearchCV

# 하이퍼파라미터 그리드 설정
param_grid = {
    'n_estimators': [50, 100, 150],
    'max_depth': [None, 10, 20],
}

# 그리드 서치 객체 생성
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5)

# 그리드 서치 수행
grid_search.fit(X_train, y_train)

# 최적의 파라미터 및 점수
best_params = grid_search.best_params_
best_score = grid_search.best_score_

랜덤 서치

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint

# 하이퍼파라미터 분포 설정
param_dist = {
    'n_estimators': randint(50, 200),
    'max_depth': [None, 10, 20],
}

# 랜덤 서치 객체 생성
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=10, cv=5, random_state=42)

# 랜덤 서치 수행
random_search.fit(X_train, y_train)

# 최적의 파라미터 및 점수
best_params = random_search.best_params_
best_score = random_search.best_score_

💾 모델 저장 및 로드

import joblib

# 모델 저장
joblib.dump(model, 'model.pkl')

# 모델 로드
loaded_model = joblib.load('model.pkl')

🧪 파이프라인 사용

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier

# 파이프라인 생성
pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('classifier', RandomForestClassifier())
])

# 파이프라인 훈련
pipeline.fit(X_train, y_train)

# 예측 수행
y_pred = pipeline.predict(X_test)

📚 유용한 팁

  • 랜덤 시드 고정: 재현성을 위해 random_state 파라미터를 설정하세요.
  • 분류 문제에서 클래스 불균형 처리: class_weight='balanced' 옵션을 사용하거나 샘플링 기법을 활용하세요.
  • 평균 교차 검증 점수 확인: 모델의 일반화 성능을 평가하기 위해 교차 검증을 활용하세요.

이 치트 시트는 데이터 분석 테스트에서 자주 사용되는 Scikit-learn의 핵심 기능들을 요약한 것입니다. 모델 개발과 평가 단계에서 이 코드를 참고하여 효율적으로 문제를 해결하세요. 성공을 기원합니다! 🚀

profile
J의 틀에 몸을 녹여 맞추는 P

0개의 댓글