2015-07-04 109 views
2

有人能让我知道,如果这是计算我的分类器的交叉验证精度的正确方法吗?我将我的数据集分为xtrain和ytrain作为训练数据,并将ytest作为测试集。如何在python/sklearn中从Random Forest中验证我的预测?

构建模型:

RFC = RandomForestClassifier(n_estimators=100) 

其拟合训练集:

RFC.fit(xtrain, ytrain) 

这是我不能确定的部分约:

scores = cross_val_score(RFC, xtest, ytest, cv = 10, scoring='precision') 

使用上面的代码,将“分数”给我的训练数据上的训练模型的精度?我非常害怕我习惯了错误的代码,并且我正适合xtest的模型,因为我的测试数据的回忆和精确度分数高于我的训练数据的分数,我无法弄清楚为什么!

回答

1

你实际上并没有当你计算的交叉验证得分自己做模型的拟合。

正确的(简单)的方式做交叉验证得分是刚刚创建模型像你这样

RFC = RandomForestClassifier(n_estimators=100) 

然后,只需计算得分

scores = cross_val_score(RFC, xtrain, ytrain, cv = 10, scoring='precision') 

通常在机器学习/统计数据,您可以将数据分成训练和测试集(就像您一样)。在此之后,使用训练数据来验证模型(训练参数,交叉验证等),然后在测试集上测试最终模型。因此,您不会在交叉验证中实际使用您的测试集,而只是在最后阶段想要获得模型的最终准确性。

将数据分离到训练和测试集并对训练数据进行交叉验证具有以下优点:当您有单独的测试集时,您不会过度拟合模型参数(使用交叉验证)最后阶段。

您可以在这里了解更多:cross_val_scoreCross-Validation