首页 > 解决方案 > 有没有办法从使用 sklearn 进行多元线性回归的预测中获取解释变量的值?

问题描述

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

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

抱歉,如果不是很清楚!

标签: pythonscikit-learnregressionlinear-regression

解决方案


当使用线性回归逼近Y与某些点相关的一些值时X,我们正在寻找的是最接近最小二乘意义上的点的线性函数 (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 预测解释变量。尽管这项工作考虑到这种方法可能会给您带来非常糟糕的结果,因为您正试图通过该空间内的一条线来接近多维空间内的点云。在尝试使用您的模型预测任何内容之前,请先查看您的分数。


推荐阅读