我正在努力在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)
使用reg.predict(x)
。您无需向predict
提供y
值。实际上,训练机器学习模型的目的是让它在x
中的输入参数中推断y
的值。
此外,predict
的文档在此解释说,predict
只期望x
作为参数。
出现错误的原因:
predition()进行了2个位置参数,但给出了3个
是因为,当您调用reg.predic(x)
时,Python将隐式将其转化为reg.predict(self,x)
,这就是为什么错误告诉您 predict()
占2个位置参数。您的呼叫预测方式是reg.predict(x,y)
,将转换为reg.predict(self,x,y)
,因此将使用3个位置参数代替2,这解释了整个错误消息。
在测试集进行测试时,假定您没有标签。您正在测试以查看模型的推广程度,因此您将预测与真实标签进行比较。当您想预测时,您仅使用X变量。
我认为您在reg.predict()
和reg.score()
之间会感到困惑,前者是一种用于使用模型对数据进行预测的方法,该模型是使用数据训练的。它仅将您的功能/自变量X
和对象本身self
(在内部进行护理)作为输入,并为您提供相应的预测目标/因变量Y
,稍后可以将其与目标变量的实际值进行比较和评估。模型的性能。但是,如果您希望以单个步骤进行模型评估,则可以使用reg.score()
方法,该方法同时将X
和Y
同时作为输入,并计算相应的评估度量(R^2或根据手头问题取决于问题)。有关更多信息,请参阅Sklearn.linear_model.linearrecress。
另外,这些方法对于Sklearn中的大多数监督学习模型都是常见的。