sklearn:如何获得多项式特征的系数 [英] sklearn: how to get coefficients of polynomial features

查看:70
本文介绍了sklearn:如何获得多项式特征的系数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道可以使用以下方法获得多项式特征作为数字:polynomial_features.transform(X).根据手册,对于度数为 2 的特征是:[1, a, b, a^2, ab, b^2].但是我如何获得高阶特征的描述?.get_params() 不显示任何功能列表.

I know it is possible to obtain the polynomial features as numbers by using: polynomial_features.transform(X). According to the manual, for a degree of two the features are: [1, a, b, a^2, ab, b^2]. But how do I obtain a description of the features for higher orders ? .get_params() does not show any list of features.

推荐答案

顺便说一句,现在有更合适的功能:PolynomialFeatures.get_feature_names.

By the way, there is more appropriate function now: PolynomialFeatures.get_feature_names.

from sklearn.preprocessing import PolynomialFeatures
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),
})

p = PolynomialFeatures(degree=2).fit(data)
print p.get_feature_names(data.columns)

输出如下:

['1', 'x', 'y', 'x^2', 'x y', 'y^2']

注意出于某种原因,您必须先拟合 PolynomialFeatures 对象,然后才能使用 get_feature_names().

N.B. For some reason you gotta fit your PolynomialFeatures object before you will be able to use get_feature_names().

如果您是 Pandas 爱好者(就像我一样),您可以轻松地使用所有新功能形成 DataFrame,如下所示:

If you are Pandas-lover (as I am), you can easily form DataFrame with all new features like this:

features = DataFrame(p.transform(data), columns=p.get_feature_names(data.columns))
print features

结果将如下所示:

     1    x    y   x^2  x y  y^2
0  1.0  8.0 -1.0  64.0 -8.0  1.0
1  1.0  9.0 -1.0  81.0 -9.0  1.0
2  1.0  1.0  0.0  1.0   0.0  0.0
3  1.0  6.0  0.0  36.0  0.0  0.0
4  1.0  5.0 -1.0  25.0 -5.0  1.0

这篇关于sklearn:如何获得多项式特征的系数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆