python - Scikit 学习多元线性回归和多项式特征的系数顺序
问题描述
我正在拟合一个简单的多项式回归模型,我想从拟合模型中获取系数。
给定准备代码:
import pandas as pd
from itertools import product
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
# data creation
sa = [1, 0, 1, 2, 3]
sb = [2, 1, 0, 1, 2]
raw = {'a': [], 'b': [], 'w': []}
for (ai, av), (bi, bv) in product(enumerate(sa), enumerate(sb)):
raw['a'].append(ai)
raw['b'].append(bi)
raw['w'].append(av + bv)
data = pd.DataFrame(raw)
# regression
x = data[['a', 'b']].values
y = data['w']
poly = PolynomialFeatures(2)
linr = LinearRegression()
model = make_pipeline(poly, linr)
model.fit(x, y)
从这个答案中,我知道可以使用 with 获得系数
model.steps[1][1].coef_
>>> array([ 0.00000000e+00, -5.42857143e-01, -1.71428571e+00,
2.85714286e-01, 1.72774835e-16, 4.28571429e-01])
但这提供了一个一维数组,我不确定哪些数字对应于哪些变量。
它们是按a 0、 a 1、 a 2、 b 0、 b 1、 b 2还是按a 0、 b 0、 a 1、 b 1、 a 2、 b 2排序的?
解决方案
您可以使用 的get_feature_names()
来PolynomialFeatures
了解订单。
在管道中,您可以这样做:
model.steps[0][1].get_feature_names()
# Output:
['1', 'x0', 'x1', 'x0^2', 'x0 x1', 'x1^2']
如果您有功能的名称(在您的情况下为“a”、“b”),您可以通过它来获取实际功能。
model.steps[0][1].get_feature_names(['a', 'b'])
# Output:
['1', 'a', 'b', 'a^2', 'a b', 'b^2']
推荐阅读
- javascript - 防止滚动直到动画完成
- android - 如何通过侦听器检查用户是否通过电子邮件验证?
- intellij-idea - IntelliJ CE 无法识别 Play 框架
- listview - React 原生水平列表如何选择中心元素 id 并显示在屏幕上
- linux - 如何将包含内容 /u02/app/oracle-1/product/12.2.0/db_1:N 的文件中的整行替换为 /u01/app/oracle/product/12.2.0/db_1:Y
- json - 从scala中的字段生成一个json结构
- clojure - 在 mac os 10.13.6 下安装 clojure lein 的问题
- python - 如何在 python 中测试 Klein 服务器
- jquery - 使用 JQuery 插入 XML 将属性更改为小写
- java - 为什么当我修改原始 ArrayList 时复制的 ArrayList 会被修改