如何测量随机森林分类器的准确性?

Posted

技术标签:

【中文标题】如何测量随机森林分类器的准确性?【英文标题】:How to measure Random Forest classifier accuracy? 【发布时间】:2021-07-25 10:38:36 【问题描述】:

所以,我正在使用随机森林分类器使用以下代码进行预测:

# Import Random Forest
from sklearn.ensemble import RandomForestClassifier

# Create a Gaussian Classifier
clf_two=RandomForestClassifier(n_estimators=3)

# Train the model using the training sets
clf_two.fit(emb_train, ytrain.ravel())

y_pred_two=clf_two.predict(emb_test)

我想找出我的分类器的准确性并尝试这样做:

# Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics

# Model Accuracy
print("Accuracy:", metrics.accuracy_score(ytrain, y_pred_two))

问题在于y_pred_two 是大小为(5989,) 的行向量,而ytrain 是大小为(16128, 1) 的列向量。所以两者之间存在大小不匹配,我收到此错误:

ValueError: Found input variables with inconsistent numbers of samples: [16128, 5989]

如果y_pred_twoytrain 的大小不同或者我做错了什么,是否仍然可以测量准确性?但这就是向我提供训练和测试数据的方式。

我们将不胜感激您的快速帮助!

【问题讨论】:

【参考方案1】:

在我看来,问题只是您试图评估通过在具有训练数据集的目标标签的测试样本上运行模型获得的预测值的准确性。

您只需要加载或生成测试集标签(ytest)并运行:

print("Accuracy:", metrics.accuracy_score(ytest, y_pred_two))

【讨论】:

如何生成ytest 或测试集标签。我得到了大小为(16128, 1000)emb_train、大小为(16128, 1)ytrain 和大小为(5989, 1000)emb_test。这是我正在使用的三个变量。 我不知道您要解决什么任务,但在我看来,您可能会因此生成测试输出?由于您没有获得预期的测试目标值,请将您的一些训练数据拆分为验证数据集,并使用此数据集评估模型准确性(但不要使用此验证子集进行训练!)。 Scikitlearn 包为此提供了一些功能,例如train_test_split. 但我需要对emb_test 进行最终预测,所以它必须有(5989,) 条目。如果我使用 train_test_split 是否会使测试数据大小与5989 不同,这取决于我是否将测试大小设置为 30%、40%、50% 等?如果我理解不正确,你能说明你的意思吗?

以上是关于如何测量随机森林分类器的准确性?的主要内容,如果未能解决你的问题,请参考以下文章

随机森林

随机森林

随机森林回归器的特征选择

更改随机森林分类器的阈值

集成学习:随机森林.GBDT

如何提高随机森林多类分类模型的准确率?