【问题标题】:How to print intercept and slope of a simple linear regression in Python with scikit-learn?如何使用 scikit-learn 在 Python 中打印简单线性回归的截距和斜率?
【发布时间】:2020-05-01 13:43:41
【问题描述】:

我正在尝试使用简单的线性回归(只有一个自变量)来预测汽车价格(通过机器学习)。变量是“每加仑公路里程”

0      27
1      27
2      26
3      30
4      22
       ..
200    28
201    25
202    23
203    27
204    25
Name: highway-mpg, Length: 205, dtype: int64

和“价格”:

0      13495.0
1      16500.0
2      16500.0
3      13950.0
4      17450.0
        ...   
200    16845.0
201    19045.0
202    21485.0
203    22470.0
204    22625.0
Name: price, Length: 205, dtype: float64

使用以下代码:

from sklearn.linear_model import LinearRegression

x = df["highway-mpg"]
y = df["price"]
lm = LinearRegression()

lm.fit([x],[y])
Yhat = lm.predict([x])

print(Yhat)
print(lm.intercept_)
print(lm.coef_)

但是,截距和斜率系数打印命令给了我以下输出:

[[0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]]

为什么不打印截距和斜率系数? “Yhat”打印命令确实正确打印出数组中的预测值,但不知何故,其他打印命令并没有打印出我想要的输出......

【问题讨论】:

  • 只是想知道,为什么要在x 和y 周围加上额外的方括号?
  • 如果同时去掉fit 和predict 行中的括号会发生什么?
  • @iz_ 它给了我“ValueError: Expected 2D array, got 1D array instead:”错误,这就是我使用 [x] 方法的原因
  • 你的所作所为对我来说似乎很奇怪。你能发布x 和y 的样子吗?

标签: python machine-learning scikit-learn


【解决方案1】:
基本上,是什么导致奇怪的寻找coef_和intercept_是您的数据具有205个功能和205个目标,只有1个样本。绝对不是你想要的!

您可能想要1个功能,205个样本和1个目标。为此,您需要重塑您的数据:

from sklearn.linear_model import LinearRegression
import numpy as np

mpg = np.array([27, 27, 26, 30, 22, 28, 25, 23, 27, 25]).reshape(-1, 1)
price = np.array([13495.0, 16500.0, 16500.0, 13950.0, 17450.0, 16845.0, 19045.0, 21485.0, 22470.0, 22625.0])

lm = LinearRegression()
lm.fit(mpg, price)

print(lm.intercept_)
print(lm.coef_)

我在那里使用阵列进行测试,但显然使用DataFrame的数据。

附:如果省略调整大小,则会收到这样的错误消息:

ValueError: Expected 2D array, got 1D array instead:
array=[27 27 26 30 22 28 25 23 27 25].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

^它告诉你该怎么办!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 2015-09-09
    • 2017-03-01
    • 1970-01-01
    • 2018-07-31
    • 2019-05-14
    • 2017-12-25
    相关资源
    最近更新 更多