Python 如何修复标签数量与样本数量不匹配的问题?

Python 如何修复标签数量与样本数量不匹配的问题?,python,pandas,numpy,machine-learning,scikit-learn,Python,Pandas,Numpy,Machine Learning,Scikit Learn,我正在尝试运行随机森林分类器,在测试\u训练\u分割之后,当我运行它时,它会生成一个错误,即样本数与样本数不匹配。 我有960行和26列 X=pd.read_csv('csv',delimiter=',',sep=",",quotechar='"',header=None,quoting=2,error_bad_lines=False,na_values="") X=X.drop([0,2,4,5],axis=1) X= X.fillna('') X= X[0:961].astype("int"

我正在尝试运行随机森林分类器,在测试\u训练\u分割之后,当我运行它时,它会生成一个错误,即样本数与样本数不匹配。 我有960行和26列

X=pd.read_csv('csv',delimiter=',',sep=",",quotechar='"',header=None,quoting=2,error_bad_lines=False,na_values="")
X=X.drop([0,2,4,5],axis=1)
X= X.fillna('')
X= X[0:961].astype("int")
features= X.columns
Y= X[27] #my labels
Y= Y[0:961].astype("int") # Converting datatype string to int
Y=Y[np.isfinite(X[27])] # Remove NAN values from my label Y
x_train,y_train,x_test,y_test=train_test_split(X,Y,test_size=0.3)
clf = RandomForestClassifier(n_estimators=50,max_depth=3)
clf.fit(x_train,y_train)

您的代码有两个问题

第一个是,当从标签Y中删除NaN值时:

Y=Y[np.isfinite(X[27])] # Remove NAN values from my label Y
你不会对你的特征X做同样的事情;因此,您的特征X和标签Y的样本数不同,并且
train\u test\u split
给出了预期的错误

因为已经从Y中删除了NaN值,所以在X中保留相应的行是没有意义的;所以,你应该加上

X=X[np.isfinite(X[27])] # remove rows with NaN labels
第二个问题是您的
train\u test\u split
分配错误(请检查);应该是

x_train, x_test, y_train, y_test = train_test_split(X,Y,test_size=0.3)

什么是
Y=X[27]#int(X.shape[1]-2)
??另外,请编辑您的代码以删除与问题无关的内容(
功能
tmp
)。你这里没有任何分类器…@desertnaut,请再次检查我现在编辑的代码错误发生在哪里,具体是什么?如果它发生在
列车测试\u分割
,正如您所暗示的,该行下面的所有代码都与错误无关,应该删除。请公布全部错误message@deserthaunt非常感谢,它很有效,但现在clf.score()给了我值“1.0”,这意味着效率是100%??这会发生吗?分析结果会是什么?@Anypitcher RF是一个强大的分类器,它可以产生100%的训练准确率,特别是在相对较小的数据集,如您的数据集;在不了解数据的情况下,无法提供任何进一步的意见。。。