前一篇文章介绍了多项式回归拓展后,对特定数据集有很好的拟合效果,那么拓展后的特征项是否具有解释性呢?本文以鸢尾花数据集,来对拓展后的特种项,做一个解释说明。但鸢尾花数据集拓展后的拟合效果并没有多大提高,就不做进一步回归拟合了。

代码示例

1、导入数据集,并获取特征名称

from sklearn.datasets import load_iris
import pandas as pd

iris = load_iris()
x = iris.data
y = iris.target

columns = iris.feature_names
print(columns)
# ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
# ['萼片长度', '萼片宽度', '花瓣长度', '花瓣宽度']

2、多项式回归

from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(degree=2, include_bias=False)
x = poly.fit_transform(x)

# 当数据有标签时,可以查看拓展后的特征组合
print(poly.get_feature_names(columns))

# ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)', 
# 'sepal length (cm)^2', 'sepal length (cm) sepal width (cm)', 'sepal length (cm) petal length (cm)', 'sepal length (cm) petal width (cm)', 
# 'sepal width (cm)^2', 'sepal width (cm) petal length (cm)', 'sepal width (cm) petal width (cm)', 
# 'petal length (cm)^2', 'petal length (cm) petal width (cm)', 'petal width (cm)^2']

当 degree=2 时,拓展后的特征会出现平方项和交叉项,同时可以用 get_feature_names() 方法,查看拓展项的计算方法,从而增加模型的可解释性。

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/index.php/read/296