顺便提一下,现在有更适合的函数了: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']
请注意,在使用get_feature_names()之前,你必须先适配你的PolynomialFeatures对象。
如果你像我一样热爱Pandas,你可以轻松地用以下方式创建包含所有新特征的DataFrame:
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
get_feature_names
已经被弃用,请使用get_feature_names_out
代替。 - juandesant