首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有KFold交叉验证的Scikit学习决策树

带有KFold交叉验证的Scikit学习决策树
EN

Stack Overflow用户
提问于 2018-10-22 01:08:47
回答 1查看 3.6K关注 0票数 0

我对scikit学习/机器学习比较陌生。我必须使用泰坦尼克号数据集创建一个决策树,它需要使用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_Test是测试数据集X值,y_test是实际存活率),我不确定通过使用这种方法进行训练,我的主要分类器(tree_model)是否正在使用文件夹中的每个集进行训练。

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 01:47:43

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

查看sklearn中的网格搜索功能:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52917832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档