sklearn中的数据预处理

在sklearn中有这么几个常用的预处理方法。另外为了将数据预处理的各个阶段连接起来还可以使用pipeline。

功能说明
StandardScaler无量纲化标准化,基于特征矩阵的列,将特征值转换至服从标准正态分布
MinMaxScaler无量纲化区间缩放,基于最大最小值,将特征值转换到[0, 1]区间上
Normalizer归一化基于特征矩阵的行,将样本向量转换为“单位向量”
Binarizer二值化基于给定阈值,将定量特征按阈值划分
OneHotEncoder哑编码将定性数据编码为定量数据
Imputer缺失值计算计算缺失值,缺失值可填充为均值等
PolynomialFeatures多项式数据转换多项式数据转换
FunctionTransformer自定义单元数据转换使用单变元的函数来转换数据函数来转换数据

具体代码实现

首先准备数据

from sklearn.datasets import load_iris
iris = load_iris()
train_data = iris.data 
target_data = iris.target

然后是sklearn的具体实现

"""
        缺失值计算
"""
#缺失值计算,返回值为计算缺失值后的数据
#参数missing_value为缺失值的表示形式,默认为NaN
#参数strategy为缺失值填充方式,默认为mean(均值)
from sklearn.preprocessing import Imputer
Imputer().fit_transform(train_data)


"""
        无量纲化
"""
#1.标准化
#根据【均值】和【标准差】调整
from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(train_data)


#2.区间缩放
#利用最大最小值缩放
#区间缩放,返回值为缩放到[0, 1]区间的数据
from sklearn.preprocessing import MinMaxScaler
MinMaxScaler().fit_transform(train_data)

#3.正则化
#正则化和标准化的区别是正则化是根据【特征均值】和【特征值标准差】调整
from sklearn.preprocessing import Normalizer
Normalizer().fit_transform(train_data)


"""
        对定量特征二值化
"""
#主要是阈值设定 threshold=n
#阈值设置为3,返回值为二值化后的数据
from sklearn.preprocessing import Binarizer
Binarizer(threshold=3).fit_transform(train_data)

"""
        对定性特征哑编码
        TODO iris数据都是定量的,没必要做
"""
#哑编码,对IRIS数据集的目标值,返回值为哑编码后的数据
from sklearn.preprocessing import OneHotEncoder
OneHotEncoder().fit_transform(target_data.reshape((1,-1)))

"""
        分类特征数值化
"""
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data_pd['L1_index'] = le.fit_transform(data_pd['L1'])
data_pd['topK_word_index'] = le.fit_transform(data_pd['topK_word'])

"""
        数据变换
"""
#1.多项式转换
#参数degree为度,默认值为2
from sklearn.preprocessing import PolynomialFeatures
PolynomialFeatures().fit_transform(train_data)

#2.自定义转换函数
#第一个参数是单变元函数
#本例为对数函数的数据变换
from numpy import log1p
from sklearn.preprocessing import FunctionTransformer
FunctionTransformer(log1p).fit_transform(train_data)

注:
基于树的方法是不需要进行特征的归一化,例如随机森林,bagging 和 boosting等。
基于参数的模型或基于距离的模型,都是要进行特征的归一化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值