Python Scikit学习-带KFold交叉验证的决策树

Python Scikit学习-带KFold交叉验证的决策树,python,scikit-learn,decision-tree,cross-validation,Python,Scikit Learn,Decision Tree,Cross Validation,我对scikit学习/机器学习相对较新。我必须使用Titanic数据集创建一个决策树,它需要使用5倍的KFold交叉验证。以下是我目前掌握的情况: cv = KFold(n_splits=5) tree_model = tree.DecisionTreeClassifier(max_depth=3) print(titanic_train.describe()) fold_accuracy = [] for train_index, valid_index in cv.split(X_trai

我对scikit学习/机器学习相对较新。我必须使用Titanic数据集创建一个决策树,它需要使用5倍的KFold交叉验证。以下是我目前掌握的情况:

cv = KFold(n_splits=5)

tree_model = tree.DecisionTreeClassifier(max_depth=3)
print(titanic_train.describe())
fold_accuracy = []
for train_index, valid_index in cv.split(X_train):
    train_x,test_x = X_train.iloc[train_index],X_train.iloc[valid_index]
    train_y,test_y= y_train.iloc[train_index], y_train.iloc[valid_index]

    model = tree_model.fit(train_x,train_y)
    valid_acc = model.score(test_x,test_y)
    fold_accuracy.append(valid_acc)
    print(confusion_matrix(y_test,model.predict(X_test)))

print("Accuracy per fold: ", fold_accuracy, "\n")
print("Average accuracy: ", sum(fold_accuracy)/len(fold_accuracy))
dot_data = StringIO()

我的问题是,我的模型是否只存在于回路中?我需要从提供的测试训练集中准确预测,在混乱矩阵中未标记存活的位置,X_测试是测试数据集X值,y_测试是实际存活率,我不确定通过使用此方法进行训练,我的主分类器树模型是否正在使用折叠中的每个集合进行训练

在每次迭代中,您似乎都在重新训练您的模型。只有一个模型实例,您将其创建为树模型。然后在每次迭代中创建另一个指向同一实例的指针,称为model

查看sklearn中的网格搜索功能: