Python 2.7 ValueError Scikit学习。don和x27型的特征数量;不匹配输入

Python 2.7 ValueError Scikit学习。don和x27型的特征数量;不匹配输入,python-2.7,numpy,pandas,scikit-learn,Python 2.7,Numpy,Pandas,Scikit Learn,我对一般的机器学习和特定的scikit学习是相当陌生的 我试图使用网站上给出的例子 为了自己练习,我使用自己的数据集。我的数据集分为两个不同的CSV文件: Train_data.csv(包含32列,最后一列是输出值) Test_data.csv(包含31列缺少输出列-应该是这样,否?) 测试数据比训练数据少一列 我使用以下代码学习(使用训练数据),然后预测(使用测试数据) 我面临的问题是错误: *ValueError: X.shape[1] = 31 should be equal to 29,

我对一般的机器学习和特定的scikit学习是相当陌生的

我试图使用网站上给出的例子

为了自己练习,我使用自己的数据集。我的数据集分为两个不同的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*
这是我的代码(如果看起来完全错了,很抱歉:()

培训数据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)
要分割数据,可以使用,也可以使用多个来判断模型的性能

您应该检查数据的形状

data.shape
似乎你没有考虑最后3列,而只是最后3列。请尝试:

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

我认为目标的元素比数据少,这可能导致错误是的,你是对的。但我对这一点感到困惑。但从逻辑上讲,我的训练集应该还有一个元素(结果)。测试数据不应该如此。理解正确吗?不,这不是你的测试数据,这是你的目标。在sklearn表示法中,当X是表示数据的元组或列表的选项卡,y是结果,模型必须找到的目标值时,你适合X,y。我将写一个答案,让你看得比在注释中更好,这将非常有用。谢谢。这有帮助。使用[:,:-3],我试图删除结果列(在我的数据集中是第三列)。
data = mydata.ix[:,:-1]