【问题标题】:Sklearn error : predict(x,y) takes 2 positional arguments but 3 were givenSklearn 错误:predict(x,y) 接受 2 个位置参数,但给出了 3 个
【发布时间】:2018-03-15 00:19:57
【问题描述】:

我正在对 sklearn 构建多元回归分析,我仔细查看了文档。当我运行 predict() 函数时,我收到错误:predict() 接受 2 个位置参数,但给出了 3 个

X 是数据框,y 是列;我尝试将数据框转换为数组/矩阵,但仍然出现错误。

添加了一个显示 x 和 y 数组的 sn-p。

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)

【问题讨论】:

    标签: scikit-learn sklearn-pandas


    【解决方案1】:

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

    另外,predicthere 的文档解释说,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 个,这解释了整个错误消息。

    【讨论】:

    • @GD_N 无论如何,您都应该能够接受答案 - 单击绿色复选标记以接受答案(与投票不同)。这将结束问题并使其对其他人更有用。请看What should I do when someone answers my question?
    • @charlesreid1 做到了。
    【解决方案2】:

    当您在测试集上进行测试时,假设您没有它的标签。您正在测试您的模型的泛化能力,因此您将预测与真实标签进行比较。当你想预测时,你只使用你的 X 变量。

    【讨论】:

      【解决方案3】:

      我认为您对reg.predict() 和reg.score() 感到困惑,前者是一种用于使用使用数据训练的模型对数据进行预测的方法。它仅将您的特征/自变量X 和对象本身self(内部处理)作为输入,并为您提供相应的预测目标/因变量Y,稍后可以将其与实际值进行比较目标变量并评估模型的性能。但是,如果您希望在一个步骤中进行模型评估,您可以使用reg.score() 方法,该方法将您的X 和Y 作为输入并计算相应的评估度量(R^2 或准确度取决于手头的问题)。更多信息请参考sklearn.linear_model.LinearRegression。

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

      【讨论】:

        猜你喜欢
        • 2019-04-29
        • 2017-05-07
        • 2020-05-02
        • 1970-01-01
        • 2022-01-17
        • 2019-09-21
        • 2019-07-19
        • 2021-02-02
        • 2020-02-07
        相关资源
        最近更新 更多