from sklearn.datasets import load_iris
from sklearn.model_selection import KFold
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import numpy as np
# Load the iris dataset
iris = load_iris()
X = iris.data
y = iris.target
# Define the K-fold Cross Validator
kfold = KFold(n_splits=5, shuffle=True, random_state=1)
# List to save each fold accuracy
accuracies = []
# K-fold Cross Validation model evaluation
for train_index, test_index in kfold.split(X):
# Split train-test
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
# Train the model
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
# Append to accuracy_model the accuracy of the model
accuracies.append(accuracy_score(y_test, model.predict(X_test), normalize=True)*100)
# Print the accuracy
print("accuracy: %.2f%% (+/- %.2f%%)" % (np.mean(accuracies), np.std(accuracies)))
به صورت ساده بگم مدل k بار آموزش داده میشه و تست میشه و هر بار هم از کل دیتاست استفاده می کنه .انتخاب دیتاست آموزش و تست هم به این صورته که دیتاست هر بار به k بخش تقسیم میشه و 1 قسمت برای تست و مابقی برای آموزش استفاده میشه. هر بار هم با index های تصادفی همین.