一旦获得了多元多项式回归的一组系数,该如何解释模型?

时间:2019-06-04 06:56:47

标签: python-3.x machine-learning data-science

我正在解决多变量多项式回归问题,这是在线课程的一部分,在那里,必须获得一个模型(多项式形式),以确定“汽车价格”作为“马力”,“路边重量”的函数。 ','engine-size','highway-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]

我如何分配或知道这些系数分别对应哪些变量和幂?

1 个答案:

答案 0 :(得分:1)

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

pr.get_feature_names(zi.columns)

pd.DataFrame(zip(pr.get_feature_names(zi.columns),lm.coef_),columns=["feature","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