有人可以告诉我,如果这是计算分类器的交叉验证精度的正确方法吗?我将我的数据集划分为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,因为我的测试数据的回忆和精度得分高于我的训练数据的分数,我无法弄清楚为什么!
答案 0 :(得分:1)
在计算交叉验证分数时,您实际上不必自己拟合模型。
进行交叉验证分数的正确(更简单)方法是像创建模型一样创建模型
FirstLevel
然后只计算分数
RFC = RandomForestClassifier(n_estimators=100)
通常在机器学习/统计中,您将数据分成训练和测试集(就像您一样)。在此之后,训练数据用于验证模型(训练参数,交叉验证等),然后在测试集上测试最终模型。因此,您不会在交叉验证中实际使用您的测试集,只有在您希望获得模型的最终精度的最后阶段。
将数据分离到训练和测试集并对训练数据进行交叉验证具有以下优点:当您拥有仅用于训练数据的单独测试集时,您将不会过度拟合模型参数(使用交叉验证)最后阶段。
您可以在此处了解详情:cross_val_score和Cross-Validation