【问题标题】:Is there a way to get the values for the explanatory variables from a prediction using sklearn for multiple linear regression?有没有办法从使用 sklearn 进行多元线性回归的预测中获取解释变量的值?
【发布时间】:2021-05-01 02:53:14
【问题描述】:

我试图了解是否有一种方法,使用sklearn.linear_model.LinearRegression() 来获取解释变量的值,给定X 的预测。

例如 - 查看汽车的 MPG。我可以使用多个解释变量构建模型,然后(成功地)预测给定 X 集的 MPG。但是,我可以做相反的事情并给出Y,然后得到预测的X 值吗?

如果不是很清楚,请见谅!

【问题讨论】:

  • 这不是一对一的! y 中的每个值都可以有 X、f.i. 的不同可能组合。 y = b0 + b1 * x1 + b2 * x2b0 = 5, b1 = 2, b3 = .5 产生一组特定的 x x1 = 3.5, x2 = 7 --> y = 15.5 = 5 + 2 * 3.5 + 0.5 * 7. 以及 x1 = 0, x2 = 21 --> y = 15.5 = 5 + 2 * 0 + .5 * 21。所以:不,不可能从预测的 y 值中得到 X 值(除了一些非常基本和特定的情况)!

标签: python scikit-learn regression linear-regression


【解决方案1】:

当使用线性回归逼近与某些点 X 相关联的某些值 Y 时,我们正在寻找最接近最小二乘意义上的点的线性函数 (f(x) = ax + k)。所以你没有得到Y,而是得到了最接近你输入的线性函数。

你能做相反的事情,那就是构建一个预测 $X$ 而不是 $Y$ 的函数。考虑sklearn.linear_model.LinearRegression 中的示例,我们将对其进行一些调整。

>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
>>> # y = 1 * x_0 + 2 * x_1 + 3
>>> y = np.dot(X, np.array([1, 2])) + 3
>>> # Changing y <-> X 
>>> reg = LinearRegression().fit(y, X)
>>> # Changing y <-> X 
>>> reg.score(y, X)
0.8269230769230769
>>> reg.coef_
array([[0.23076923],
       [0.38461538]])
>>> reg.intercept_
array([-0.46153846, -1.26923077])
>>> reg.predict(np.array([[16.]]))
array([[3.23076923, 4.88461538]])

这可以让您根据车辆的 MPG 预测解释变量。尽管这项工作考虑到这种方法可能会给您带来非常糟糕的结果,因为您正试图接近多维空间内的点云,并且该空间内有一条线。在尝试使用您的模型进行任何预测之前,请先查看您的分数。

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 2015-06-19
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2011-12-20
    • 2020-08-06
    相关资源
    最近更新 更多