获得多变量多项式回归的一组系数后,如何解释模型?



我正在解决一个多变量多项式回归问题,作为在线课程的一部分,必须获得一个模型(多项式形式)来确定"汽车价格"作为"马力"、"整备质量"、"发动机尺寸"、"高速公路-mpg"的函数。课程幻灯片中给出的代码对我不起作用,因此我尝试使用一种不同的方法自行解决问题,并且(不确定)我成功了。

现在我想确定哪个系数属于哪个变量和什么幂。

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
lm=LinearRegression()
pr=PolynomialFeatures(degree=2, include_bias=False)
zi=df[['horsepower','curb-weight','engine-size','highway-mpg']]
y=df["price"]
x_poly=pr.fit_transform(zi)
lm.fit(x_poly,y)
y_poly_pred=lm.predict(x_poly)
print(lm.intercept_)
print(lm.coef_)

'print(lm.coef_)' 的输出是一个数组:

[  3.76158683e+02,   1.09866844e+01,  -1.15342835e+02,   2.20081486e+02,
1.67487147e+00,  -1.85925420e-01,  -1.27963440e+00,  -1.97616945e+00,
5.93872420e-04,   1.11397083e-01,  -2.12935236e-01,   1.04605018e-01,
2.69312438e-01,   4.36657298e+00]

我怎样才能分配或知道这些系数对应于哪些变量和哪些幂?

一种方法是,您可以像这样获取 ploymomialfeature 列名称

pr.get_feature_names(zi.columns)

pd.DataFrame(zip(pr.get_feature_names(zi.columns),lm.coef_),columns=["feature","coef_"])

以上应打印每个特征的coef

工作示例:

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np
data = pd.DataFrame.from_dict({
'x': np.random.randint(low=1, high=10, size=5),
'y': np.random.randint(low=-1, high=1, size=5),
})
lm=LinearRegression()
p = PolynomialFeatures(degree=2)
p_data = p.fit_transform(data)
lm.fit(p_data,data['y'])
print (p.get_feature_names(data.columns))
coefmapping = pd.DataFrame(zip(p.get_feature_names(data.columns),lm.coef_),columns=["feature","coef_"])
print(coefmapping)

输出:

feature         coef_
0       1 -1.204939e-14
1       x -1.165951e-15
2       y  5.000000e-01
3     x^2 -6.938894e-18
4     x y -3.156113e-16
5     y^2 -5.000000e-01

最新更新