特征工程-数据预处理

特征工程-数据预处理

1、标准化

  • 值转换为0,方差为1的分布
  • 如SVM的RBF核和线性模型的L1和L2正则化项,都假设所有特征的均值都为零,并且方差在同一个数量级。如果一个特征的方差比其余特征的方差大许多个数量级,那么该特征将会主导整个目标函数,使得模型不能从其余特征学习到数据的特征
    from sklearn import preprocessing
    X_scaled = preprocessing.scale(X,with_mean=True,with_std=True)
    # 参数一:with_mean 均值是否转化为0
    # 参数二:with_std  方差是否转化为1
    print (X_scaled.mean(axis=0))
    print (X_scaled.std(axis=0))
    sklearn.preprocessing.StandardScaler
    # 计算特征的均值和标准差,以使得可以重复利用该类对之后的测试数据进行相同的转换
    preprocessing.StandardScaler().fit_transform("特征属性")
1)Min-Max标准化
  • 可以将数据放缩到一个指定区间
   preprocessing.MinMaxScaler(feature_range=(2, 4))
   # 参数:feature_range=(min, max) 是指定区间的范围
2)稀疏数据的标准化
  • 对稀疏数据直接进行标准化会破坏数据的稀疏结构,并且造成内存的过多消耗
  • sklearn.preprocess提供了MaxAbsScaler和maxabs_scale
  • 中心化后的数据预计足够小,也可以使用稀疏矩阵的toarray方法将稀疏输入转换为数组。
3)带离群值的标准化
  • 如果数据中包含许多离群值,则使用数据的均值和方差进行缩放可能效果不佳。
  • 转换后的数据将会均匀分布[0,1]区间
	 preprocessing.QuantileTransformer(n_quantiles=1000,    random_state=0)
	 X_trans = quantile_transformer.fit_transform(X)
	 np.percentile(X_trans, [0, 25, 50, 75, 100])
	 X_trans_less = quantile_transformer.transform(X.iloc[:40])
	 np.percentile(X_trans_less, [0, 25, 50, 75, 100]) 
4)数据白化
  • 去除特征之间的相关性
  • 使用sklearn.decomposition.PCA

2、归一化

  • 使得在样本向量之间进行点乘运算或者计算样本之间的相似性时,拥有统一的标准。它是文本分类和聚类上下文中使用的向量空间模型的基础。
  • sklearn.preprocessing.normalize
    preprocessing.normalize(X, norm='l2')
    # 拿到新的样本时候,可以进行转化
    normalizer.transform([[-1.,  1., 0.]]) 

3、二值化

  • 特征二值化是对数值特征进行阈值处理以获得布尔值的过程
    preprocessing.Binarizer(threshold=1.0).fit(X)  
    # 参数:threshold 设置阈值 大于阈值的值转换为1,小于阈值的值转换为0

4、缺失值填补

  • sklearn.preprocessing.Imputer类提供了用于填补缺失值的基本策略
imp = preprocessing.Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit_transform([[1, 2], [np.nan, np.nan], [7, 10]])

5、多项式特征生成

考虑输入数据的非线性特性,增加模型的复杂性是有用的。一个简单而常用的方法就是生成多项式特征,它可以得到特征的高阶和交互项。sklearn提供sklearn.preprocessing.PolynomialFeatures实现这一过程。

poly = preprocessing.PolynomialFeatures(interaction_only=True, include_bias=False)
poly.fit_transform(X)
该类包括三个基本参数:
# degree:多项式特征的自由度,即最多由多少个特征组合而成,默认值为2;

# interaction_only:布尔值,默认为False,如果为True,则只包含多个特征相乘得到的特征(不包括自己与自己的乘积);
# include_bias:布尔值,默认为True,产生一列所有特征幂为零的列,即全为1的列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值