决策树的准确性评分返回“ValueError: 发现输入变量的样本数量不一致”

我在尝试使用给定数据创建决策树,但不知为何 accuracy_score 返回了

ValueError: 发现输入变量的样本数量不一致:

当我将训练数据拆分为验证集(20%)和训练集(80%)时。

这是我拆分数据的方式:

from sklearn.utils import shufflefrom sklearn.model_selection import train_test_split# stDt 是打乱后的训练集stDt = shuffle(tDt) # 将打乱后的训练集拆分为训练集和验证集stDt, vtDt = train_test_split(stDt,train_size=0.8, shuffle=False)print(tDt.shape)print(stDt.shape)print(vtDt.shape)

这是我训练数据的方式:

# 训练集的属性和标签attributesT =  stDt.valueslabelsT = stDt.label# 训练决策树分类器from sklearn.tree import DecisionTreeClassifierdtree1 = DecisionTreeClassifier(min_samples_split = 1.0)dtree2 = DecisionTreeClassifier(min_samples_split = 3)dtree3 = DecisionTreeClassifier(min_samples_split = 5)fited1 = dtree1.fit(attributesT,labelsT)fited2 = dtree2.fit(attributesT,labelsT)fited3 = dtree3.fit(attributesT,labelsT)

这是测试和准确性评分部分:

from sklearn.metrics import accuracy_scoreret1 = fited1.predict(stDt)ret2 = fited2.predict(stDt)ret3 = fited3.predict(stDt)print(accuracy_score(vtDt.label,ret1))

回答:

您得到的错误是预期的,因为您试图将从训练集(ret1 = fited1.predict(stDt))生成的预测与验证集的标签(vtDt.label)进行比较。

这是获取您的 fitted1 模型的训练和验证准确性的正确方法(其他模型类似):

# 在训练集上的预测:ret1 = fitted1.predict(stDt)# 训练准确性:accuracy_score(stDt.label,ret1)# 在验证集上的预测:pred1 = fitted1.predict(vtDt)# 验证准确性:accuracy_score(vtDt.label,pred1)

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注