ValueError Scikit learn.模型的特征数与输入不匹配



我对机器学习和scikit学习都很陌生。

我正在尝试使用网站上给出的例子http://scikit-learn.org/stable/tutorial/basic/tutorial.html

为了自己练习,我使用了自己的数据集。我的数据集分为两个不同的CSV文件:

Train_data.csv(包含32列,最后一列为输出值)。

Test_data.csv(包含31列输出列丢失-应该是哪种情况,否?)

测试数据比训练数据少一列

我使用以下代码来学习(使用训练数据),然后预测(使用测试数据)。

我面临的问题是错误:

*ValueError: X.shape[1] = 31 should be equal to 29, the number of features at training time*

这是我的代码(很抱歉,如果它看起来完全错误:()

import pandas as pd #import the library
from sklearn import svm 
mydata = pd.read_csv("Train - Copy.csv") #I read my training data set
target = mydata["Desired"]  #my csv has header row, and the output label column is named "Desired"
data = mydata.ix[:,:-3] #select all but the last column as data

clf = svm.SVC(gamma=0.001, C=100.) #Code from the URL above
clf.fit(data,target)  #Code from the URL above 
test_data = pd.read_csv("test.csv") #I read my test data set. Without the output column 
clf.predict(test_data[-1:]) #Code from the URL above

训练数据csv标签看起来像这样:

值1、值2、值3、值4、输出

测试数据csv标签看起来像这样:

值1、值2、值3、值4。

感谢:)

您的问题是一个监督问题,您有一些数据的形式为(输入,输出)。

输入是描述示例的特征,输出是预测模型在给定输入的情况下应该做出响应。

在你的训练数据中,csv文件中还有一个属性,因为为了训练你的模型,你需要给他输出。

带有监督问题的sklearn中的一般工作流程应类似于以下

X, Y = read_data(data)
n = len(X)
X_train, X_test = X[:n*0.8], X[n*0.8:]
Y_train, Y_test = Y[:n*0.8], Y[n*0.8:]
model.fit(X_train,Y_train)
model.score(X_test, Y_test)

要分割数据,可以使用train_testrongplit,也可以使用几个指标来判断模型的性能。

你应该检查你的数据的形状

data.shape

你似乎没有考虑最后三列,而只是最后一列。尝试:

data = mydata.ix[:,:-1]

相关内容

  • 没有找到相关文章

最新更新