机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)
在现实场景的例子里,有很多从数据集提取特征的方法。通常,将几种特征提取方法组合使用会收到更好的效果。本例显示怎样使用函数FeatureUnion
组合特征。这里要用到scikit-learn自带数据集——“鸢尾花数据集”。
“鸢尾花(Iris)数据集”位于datasets
里,是由著名统计学家Sir Ronald Fisher在1936年收集整理的数据集,作为机器学习算法的基准数据集而闻名。它包括3个品种的鸢尾花(Iris setosa, Iris virginica and Iris versicolor), 每个品种50个样本。每个样本有4个特征,分别是
Sepal.Length(花萼长度)
Sepal.Width(花萼宽度)
Petal.Length(花瓣长度)
Petal.Width(花瓣宽度)
特征值是正浮点数,单位是厘米。目标变量是鸢尾花的类别(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),Iris Virginica(维吉尼亚鸢尾))。
下面,让我们在python环境下载入Iris数据集,看一下它的数据形态。
from sklearn.datasets import load_iris
iris = load_iris()
print(iris.feature_names)
print(iris.target_names)
print(iris.data)
print(iris.target)
下面显示Iris的一部分特征数据
target数据
首先,从scikit-learn
里导入必需的模块与函数。
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest
加载Iris数据集,并且将特征数据和目标数据分成两个对象。
iris = load_iris()
X, y = iris.data, iris.target
建立包括两个主成分的主成分对象pca
. 主成分是一种重要的线性降维方法,它的基本原理是通过对数据进行奇异值分解(Singular Value Decomposition), 实现将高维数据投影到低维空间,从而降低了特征的维数。
pca = PCA(n_components=2)
建立最大分数特征选择器selection
. 它的基本原理是根据方差分析计算类标签与特征之间的F值,进而选择F值最大的特征。
selection = SelectKBest(k=1)
组合pca与单变量选择器,建立特征选择估计量。
combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])
参数是元组(tuples)型的,在每一个元组里,前一半是转换器的名字,后一半是转换器。建立估计量后,使用它的组合特征转换数据集。
X_features = combined_features.fit(X, y).transform(X)
建立线性核函数的C-支持向量分类器。
svm = SVC(kernel="linear")
建立combined_features和svm转换器的管道(pipeline), 最终得到一个估计量。在管道里,连续地应用转换。管道的中间步必须是转换,即执行拟合与估计方法。最终的估计量仅仅需要执行估计。使用参数memory
存储管道里的转换器。建立管道的目的是把不同的步骤集合起来,经设置不同的参数,一并进行交叉验证。
pipeline = Pipeline([("features", combined_features), ("svm", svm)])
最后,在三种特征提取方法上做网格搜索。
param_grid = dict(features__pca__n_components=[1, 2, 3],
features__univ_select__k=[1, 2],
svm__C=[0.1, 1, 10])
grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)
阅读更多精彩内容,请关注微信公众号:统计学习与大数据