Iris

简介

使用 sklearn 中鸢尾花数据集arrow-up-right对特征处理功能进行说明。

IRIS数据集由Fisher在1936年整理,包含4个特征(Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)),特征值都为正浮点数,单位为厘米。目标值为鸢尾花的分类(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),Iris Virginica(维吉尼亚鸢尾))。

参考

加载数据

from sklearn.datasets import load_iris

# 导入数据集
iris = load_iris()

# 特征矩阵
print(type(iris.data))
print(iris.data[:5])

# 目标向量
print(type(iris.target))
print(iris.target)

特征预处理

无量纲化

标准化

使用preproccessing库的StandardScaler类对数据进行标准化的代码如下。

区间缩放法

使用preproccessing库的MinMaxScaler类对数据进行区间缩放的代码如下。

标准化与归一化的区别

使用preproccessing库的Normalizer类对数据进行归一化的代码如下。

对定量特征二值化

使用preproccessing库的Binarizer类对数据进行二值化的代码如下。

对定性特征哑编码

由于IRIS数据集的特征皆为定量特征,故使用其目标值进行哑编码(实际上是不需要的)。使用preproccessing库的OneHotEncoder类对数据进行哑编码的代码如下。

' with 150 stored elements in Compressed Sparse Row format>

缺失值计算

由于IRIS数据集没有缺失值,故对数据集新增一个样本,4个特征均赋值为NaN,表示数据缺失。使用preproccessing库的Imputer类对数据进行缺失值计算的代码如下。

数据变换

使用preproccessing库的PolynomialFeatures类对数据进行多项式转换的代码如下。

基于单变元函数的数据变换可以使用一个统一的方式完成,使用preproccessing库的FunctionTransformer对数据进行对数函数转换的代码如下。

特征选择

Filter

方差选择法

相关系数法

用feature_selection库的SelectKBest类结合相关系数来选择特征的代码如下。

卡方检验

用feature_selection库的SelectKBest类结合卡方检验来选择特征的代码如下:

互信息法

使用feature_selection库的SelectKBest类结合最大信息系数法来选择特征的代码如下:

Wrapper

递归特征消除法

使用feature_selection库的RFE类来选择特征的代码如下。

Embedded

基于惩罚项的特征选择法

使用feature_selection库的SelectFromModel类结合带L1惩罚项的逻辑回归模型,来选择特征的代码如下:

实际上,L1惩罚项降维的原理在于保留多个对目标值具有同等相关性的特征中的一个,所以没选到的特征不代表不重要。故,可结合L2惩罚项来优化。具体操作为:若一个特征在L1中的权值为1,选择在L2中权值差别不大且在L1中权值为0的特征构成同类集合,将这一集合中的特征平分L1中的权值,故需要构建一个新的逻辑回归模型:

使用feature_selection库的SelectFromModel类结合带L1以及L2惩罚项的逻辑回归模型,来选择特征的代码如下:

基于树模型的特征选择法

树模型中GBDT也可用来作为基模型进行特征选择,使用feature_selection库的SelectFromModel类结合GBDT模型,来选择特征的代码如下:

降维

PCA

使用decomposition库的PCA类选择特征的代码如下:

线性判别分析法(LDA)

使用lda库的LDA类选择特征的代码如下:

最后更新于