




from sklearn.model_selection import KFold
kfold = KFold(n_splits=5)
wine_tree_cv = DecisionTreeClassifier(max_depth=2, random_state=13)
for train_idx, validation_idx in kfold.split(X):
print(len(train_idx), len(validation_idx))

cv_accuracy = []
for train_idx, validation_idx in kfold.split(X):
X_train, X_validation = X.iloc[train_idx], X.iloc[validation_idx]
y_train, y_validation = y.iloc[train_idx], y.iloc[validation_idx]
wine_tree_cv.fit(X_train, y_train)
pred = wine_tree_cv.predict(X_validation)
cv_accuracy.append(accuracy_score(y_validation, pred))
cv_accuracy
np.mean(cv_accuracy)

from sklearn.model_selection import StratifiedKFold
skfold = StratifiedKFold(n_splits=5)
wine_tree_cv = DecisionTreeClassifier(max_depth=2, random_state=13)
cv_accuracy = []
for train_idx, validation_idx in skfold.split(X, y):
X_train, X_validation = X.iloc[train_idx], X.iloc[validation_idx]
y_train, y_validation = y.iloc[train_idx], y.iloc[validation_idx]
wine_tree_cv.fit(X_train, y_train)
pred = wine_tree_cv.predict(X_validation)
cv_accuracy.append(accuracy_score(y_validation, pred))
cv_accuracy
np.mean(cv_accuracy)

from sklearn.model_selection import cross_val_score
X = wine.drop(['taste', 'quality'], axis=1) # feature
y = wine['taste'] # label
skfold = StratifiedKFold(n_splits=5)
wine_tree_cv = DecisionTreeClassifier(max_depth=2, random_state=13)
cross_val_score(wine_tree_cv, X, y, scoring=None, cv=skfold)

wine_tree_cv = DecisionTreeClassifier(max_depth=5, random_state=13)
cross_val_score(wine_tree_cv, X, y, scoring=None, cv=skfold)

from sklearn.model_selection import cross_validate
X = wine.drop(['taste', 'quality'], axis=1) # feature
y = wine['taste'] # label
skfold = StratifiedKFold(n_splits=5)
wine_tree_cv = DecisionTreeClassifier(max_depth=2, random_state=13)
cross_validate(wine_tree_cv, X, y, scoring=None, cv=skfold, return_train_score=True)
