机器学习Python语言与信息数据获取和机器学习

特征工程

2017-04-03  本文已影响355人  jockerMe

文章主要参考于大神城东(部分认为有问题的地方进行了修改)

1. 特征工程是什么?

数据和特征决定了机器学习的上限,而模型和算法只是逼近了这个上线而已。特征工程的本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。通过总结和归纳,人们认为特征工程包括以下方面:

本文使用python sklearn IRIS(鸢尾花)数据集来对特征处理功能进行说明,IRIS数据集包含4个特征(Sepal.Length(花萼长度),Sepal.Width(花萼宽度),Petal.Length(花瓣长度),Petal.Width(花瓣宽度)),特征都为正浮点数,单位为厘米。目标值为鸢尾花的分类(Iris Setosa(山鸢尾) , Iris Versicolour(杂色鸢尾),IrisVirginica (维吉尼亚鸢尾))

from sklearn.datasets import load_iris

#导入IRIS 数据集
iris = load_iris()
#特征矩阵
iris.data
#目标向量
iris.target

2. 数据预处理

通过特征提取,我们能得到未经处理的特征,这是特征可能存在以下问题:

可以采用方法,曲线救国
arry = LabelEncoder().fit_transform(testdata['pet'])
OneHotEncoder(sparse = False).fit_transform(arry.reshape(-1,-1))
```

我们可以使用sklearn中的preprocessing库进行数据预处理,可以覆盖以上问题的解决方案。

3. 特征选择

当数据预处理完成后,我们需要选择有意义的特征输入机械学习的算法和模型中进行训练。通常来说,从两个方面考虑来选择特征:

根据特征选择的形式又可以将特征选择的方法分为3种:

  1. 降维
    当特征选择完成以后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法除了以上提到的基于L1惩罚的模型以外,另外还有主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本具有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。
    1. 主成分分析法(PCA)
    from sklearn.decomposition import PCA
    from sklearn.decomposition import PCA
    #主成分分析法,返回降维后的数据
    #参数n_components为主成分数目
    PCA(n_components=2).fit_transform(iris.data)
    
    1. 线性判别分析法(LDA)
    from sklearn.lda import LDA
    #线性判别分析法,返回降维后的数据
    #参数n_components为降维后的维数
    LDA(n_components=2).fit_transform(iris.data, iris.target)
    
上一篇下一篇

猜你喜欢

热点阅读