scikit learn 활용 교차검증

I'm Cape·2023년 7월 25일
0

재미있게도 여러 수준의 추상화? 단계를 제공하고 있다.

가장 베이직은 KFold 클래스를 사용하는 것이다.

from sklearn.model_selection import KFold
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

clf = DecisionTreeClassifier(max_depth=2)
accuracies = []

# 데이터 X, y가 존재할 때
kf = KFold(n_split=5) # 5회 접는다
for train_idx, test_idx in kf.split(X):
	X_train, X_test = X.iloc[train_idx], X.iloc[test_idx]
    y_train, y_test = y.iloc[train_idx], y.iloc[test_idx]
    clf.fit(X_train)
    y_pred = clf.predict(X_test)
    score = accuracy_score(y_test, y_pred)
    accuracies.append(score)
    
print(accuracies) # k개의 정확도가 계산됨

stratified k-fold도 있지만 코드는 쓰지 않겠다...

이보다 훨씬 쉬운 방법은 cross_val_score을 활용하는 것이다.

from sklearn.model_selection import cross_val_score, KFold
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

clf = DecisionTreeClassifier(max_depth=2)
kfold = KFold(n_split=5) 
cross_val_score(clf, X, y, cv=kfold)

정말 간단하게 진행할 수 있다.

profile
Impact

0개의 댓글