如果这是计算我的分类器交叉验证精度的正确方法,有人可以告诉我吗?我将我的数据集分为用于训练数据的 xtrain 和 ytrain 以及用于测试集的 xtest 和 ytest。
构建模型:
RFC = RandomForestClassifier(n_estimators=100)
将其拟合到训练集:
RFC.fit(xtrain, ytrain)
这是我不确定的部分:
scores = cross_val_score(RFC, xtest, ytest, cv = 10, scoring='precision')
使用上面的代码,“分数”会给我在训练数据上训练的模型的精度吗?我非常担心我曾经使用错误的代码并且我正在将模型拟合到 xtest,因为我的测试数据的召回率和精确率得分高于我的训练数据的得分,我无法弄清楚为什么!
最佳答案
在计算交叉验证分数时,您实际上不必自己对模型进行拟合。
进行交叉验证得分的正确(更简单)方法是像您一样创建模型
RFC = RandomForestClassifier(n_estimators=100)
然后计算分数
scores = cross_val_score(RFC, xtrain, ytrain, cv = 10, scoring='precision')
通常在机器学习/统计中,您会在训练集和测试集上拆分数据(就像您所做的那样)。在此之后,训练数据用于验证模型(训练参数、交叉验证等),然后在测试集上测试最终模型。因此,您实际上不会在交叉验证中使用您的测试集,只有在您想要获得模型的最终准确性时才会在最后阶段使用。
将数据分为训练集和测试集并对训练数据进行交叉验证的好处是,当您拥有仅在最后阶段。
您可以在此处了解更多信息:cross_val_score和 Cross-Validation
关于random-forest - 如何在 python/sklearn 中交叉验证随机森林的预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31221060/