我正在开发一个关于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)
答案 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()
方法,该方法将X
和Y
都作为输入并计算相应的评估度量(R ^ 2或精度,具体取决于手头的问题)。有关更多信息,请参阅sklearn.linear_model.LinearRegression。
此外,这些方法在sklearn中的大多数监督学习模型中都很常见。