Sklearn错误:predict(x,y)取2个位置参数,但给出3个

时间:2017-10-03 18:04:25

标签: scikit-learn sklearn-pandas

我正在开发一个关于sklearn的多元回归分析,我仔细研究了文档。当我运行predict()函数时,我收到错误:predict()需要2个位置参数,但是给出了3个

X是数据帧,y是列;我试图将数据帧转换为数组/矩阵但仍然得到错误。

添加了一个显示x和y数组的代码段。

reg.coef_
reg.predict(x,y)

x_train=train.drop('y-variable',axis =1)
y_train=train['y-variable']

x_test=test.drop('y-variable',axis =1)
y_test=test['y-variable']


x=x_test.as_matrix()
y=y_test.as_matrix()

reg = linear_model.LinearRegression()
reg.fit(x_train,y_train)

reg.predict(x,y)

3 个答案:

答案 0 :(得分:12)

使用reg.predict(x)。您不需要向y提供predict值。事实上,训练机器学习模型的目的是让它在y给出输入参数的情况下推断出x的值。

此外,predict here的文档说明predict只需要x作为参数。

您收到错误的原因:

  

predict()需要2个位置参数但是3个被赋予

是因为,当你致电reg.predic(x)时,python会隐式将其翻译为reg.predict(self,x),这就是错误告诉你 predict()占据2位置的原因参数。您调用预测的方式reg.predict(x,y)将被转换为reg.predict(self,x,y),因此将使用3个位置参数而不是2,这将解释整个错误消息。

答案 1 :(得分:1)

当您测试测试集时,假设您没有标签。您正在测试您的模型可以概括的程度,因此您可以将预测与实际标签进行比较。如果要预测,只使用X变量。

答案 2 :(得分:0)

我认为您在reg.predict()reg.score()之间感到困惑,前者是一种用于使用通过数据训练的模型对数据进行预测的方法。它仅将您的特征/独立变量X和对象本身self(内部注意)作为输入,并为您提供相应的预测目标/独立变量Y,之后将其与目标变量的实际值进行比较,并评估模型的性能。但是,如果您希望一步一步地进行模型评估,则可以使用reg.score()方法,该方法将XY都作为输入并计算相应的评估度量(R ^ 2或精度,具体取决于手头的问题)。有关更多信息,请参阅sklearn.linear_model.LinearRegression

此外,这些方法在sklearn中的大多数监督学习模型中都很常见。