「Python」sklearn第三弹-多项式特征和缺失值处理
本文是讲解机器学习模块sklearn第三讲,主要讲解数据挖掘中的多项式特征以及缺失值的相关处理。
多项式特征
why? 在数据挖掘中,获取数据的代价经常是非常高昂的。所以有时就需要人为的制造一些特征,并且有的特征之间是有关联的。生成多项式特征可以轻松的为我们获取更多的数据,并获得特征的更高维度和互相间关系的项且引入了特征之间的非线性关系,可以有效的增加模型的复杂度。
PolynomialFeatures
在sklearn中通过PolynomialFeatures方法来生成多项式特征,使用方法如下:
import numpy as np from sklearn.preprocessing import PolynomialFeatures data = np.arange(6).reshape(3, 2) poly = PolynomialFeatures(2) # (degree=2, inte\fraction_only=True)#degree=n表示生成n项式特征,只需要特征之间交互 data = poly.fit_transform(data) >>>data array([[ 1., 0., 1., 0., 0., 1.], [ 1., 2., 3., 4., 6., 9.], [ 1., 4., 5., 16., 20., 25.]])
缺失值处理
why?
由于各种原因,真实世界中的许多数据集都包含缺失数据,这类数据经常被编码成空格、NaN,或者是其他的占位符。
但是这样的数据集并不能被sklearn学习算法兼容,因为大多的学习算法都默认假设数组中的元素都是数值,因而所有的元素都有自己的意义。
使用不完整的数据集的一个基本策略就是舍弃掉整行或整列包含缺失值的数据。但是这样就付出了舍弃可能有价值数据(即使是不完整的 )的代价。 处理缺失数值的一个更好的策略就是从已有的数据推断出缺失的数值。
在sklearn中使用imputer
方法,通过指定参数,来实现填充缺失值的方法。主要提供了使用平均值代替缺失值,使用中位数代替缺失值,使用频率最高的值代替缺失值三种方法。
Imputer
class sklearn.preprocessing.Imputer(missing_values=’NaN’, strategy=’mean’, axis=0, verbose=0, copy=True)
参数:
- missing_values: integer or “NaN”, optional (default=”NaN”)
- strategy : string, optional (default=”mean”)
- The imputation strategy.
- If “mean”, then replace missing values using the mean along the axis. 使用平均值代替
- If “median”, then replace missing values using the median along the axis.使用中值代替
- If “most_frequent”, then replace missing using the most frequent value along the axis.使用众数代替,也就是出现次数最多的数
- axis: 默认为 axis=0
- axis = 0, 按列处理
- aixs =1 , 按行处理
代码实例:
from sklearn.preprocessing import Imputer data = [[np.nan, 2], [6, np.nan], [7, 4],[np.nan,4]] imp = Imputer(missing_values='NaN', strategy='mean', axis=0)#缺失值为nan,沿着每一列,使用平均值来代替缺失值 data = imp.fit_transform(data) >>>data array([[6.5 , 2. ], [6. , 3.33333333], [7. , 4. ], [6.5 , 4. ]]) ''' strategy: `mean`表示使用平均值代替缺失值 `median`表示使用中位数代替缺失值 `most_frequent`表示使用出现频率最多的值代替缺失值 missing_values: 表示何为缺失值 `NaN`表示`np.nan`为缺失值 `0`表示`0`为缺失值