Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 决策树准确度;ValueError:找到样本数不一致的输入变量;_Python 3.x_Machine Learning_Scikit Learn_Decision Tree - Fatal编程技术网

Python 3.x 决策树准确度;ValueError:找到样本数不一致的输入变量;

Python 3.x 决策树准确度;ValueError:找到样本数不一致的输入变量;,python-3.x,machine-learning,scikit-learn,decision-tree,Python 3.x,Machine Learning,Scikit Learn,Decision Tree,我试图用给定的数据创建一个决策树。但由于某种原因,准确度\u评分给出 ValueError:找到样本数不一致的输入变量: 当我将培训数据拆分为验证(%20)和培训(%80)时 以下是我如何分割数据的: from sklearn.utils import shuffle from sklearn.model_selection import train_test_split # stDt shuffled training set stDt = shuffle(tDt) #divide

我试图用给定的数据创建一个决策树。但由于某种原因,
准确度\u评分
给出

ValueError:找到样本数不一致的输入变量:

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

以下是我如何分割数据的:

from sklearn.utils import shuffle

from sklearn.model_selection import train_test_split

# stDt shuffled training set

stDt = shuffle(tDt) 

#divide shuffled training set to training and validation set

stDt, vtDt = train_test_split(stDt,train_size=0.8, shuffle=False)

print(tDt.shape)
print(stDt.shape)
print(vtDt.shape)
以下是我如何训练数据:

#attibutes and labels of training set

attributesT =  stDt.values

labelsT = stDt.label


# Train Decision tree classifiers
from sklearn.tree import DecisionTreeClassifier


dtree1 = 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_score

ret1 = fited1.predict(stDt)

ret2 = fited2.predict(stDt)

ret3 = fited3.predict(stDt)

print(accuracy_score(vtDt.label,ret1))

由于您试图将从训练集(
ret1=fited1.predict(stDt)
)生成的预测与验证集的标签(
vtDt.label
)进行比较,因此可能会出现错误

以下是获得您的
fitted1
模型的培训和验证准确性的正确方法(其他模型也一样):


在不显示图形输出的情况下包含图形的打印命令,这到底有什么意义?其中,这里发布的代码应该是最小的。符号“%20”和“%80”也是非常不幸的,事实上,您使用的是
scikit-learn
,而不是
sklearn-pandas
(标记已更正)。。。
# predictions on the training set:
ret1 = fitted1.predict(stDt)

# training accuracy:
accuracy_score(stDt.label,ret1)

# predictions on the validation set:
pred1 = fitted1.predict(vtDt)

# validation accuracy:
accuracy_score(vtDt.label,pred1)