Sklearn error : predict(x,y) takes 2 positional arguments but 3 were given
Sklearn error : predict(x,y) takes 2 positional arguments but 3 were given
我正在 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
here 的文档解释说 predict
只需要 x
作为参数。
出现错误的原因:
predict() takes 2 positional arguments but 3 were given
是因为,当您调用 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()
感到困惑,前者是一种使用数据训练的模型对数据进行预测的方法。它只将您的 features/independent 变量 X
和对象本身 self
(内部处理)作为输入,并为您提供相应的预测 target/dependent 变量 Y
,稍后可以将其与目标变量的实际值进行比较并评估模型的性能。但是,如果您希望一步完成模型评估,您可以使用 reg.score()
方法,该方法将 X
和 Y
作为输入并计算相应的评估指标(R^ 2 或准确性取决于手头的问题)。详情请参考sklearn.linear_model.LinearRegression。
此外,这些方法对于 sklearn 中的大多数监督学习模型都是通用的。
我正在 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
here 的文档解释说 predict
只需要 x
作为参数。
出现错误的原因:
predict() takes 2 positional arguments but 3 were given
是因为,当您调用 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()
感到困惑,前者是一种使用数据训练的模型对数据进行预测的方法。它只将您的 features/independent 变量 X
和对象本身 self
(内部处理)作为输入,并为您提供相应的预测 target/dependent 变量 Y
,稍后可以将其与目标变量的实际值进行比较并评估模型的性能。但是,如果您希望一步完成模型评估,您可以使用 reg.score()
方法,该方法将 X
和 Y
作为输入并计算相应的评估指标(R^ 2 或准确性取决于手头的问题)。详情请参考sklearn.linear_model.LinearRegression。
此外,这些方法对于 sklearn 中的大多数监督学习模型都是通用的。