【问题标题】:Scikit Learn- Decision Tree with KFold Cross ValidationScikit Learn - 具有 KFold 交叉验证的决策树
【发布时间】:2019-03-25 20:22:31
【问题描述】:

我对 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()

我的问题是,我的拟合模型是否只存在于循环中?我需要从提供的未标记“Survived”的测试训练集中准确预测(在混淆矩阵中,X_Test 是测试数据集 X 值,y_test 是实际存活率),我不确定通过使用这个进行训练方法,我的主要分类器(tree_model)正在使用折叠中的每个集合进行训练。

【问题讨论】:

    标签: python scikit-learn decision-tree cross-validation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-11
      • 2016-04-25
      • 2013-01-24
      • 2016-05-07
      • 2017-09-02
      • 2017-02-23
      • 2020-04-05
      相关资源
      最近更新 更多