美文网首页
sklearn中的数据预处理

sklearn中的数据预处理

作者: 称霸全国 | 来源:发表于2017-05-24 11:41 被阅读0次

    在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)))
    
    """
            数据变换
    """
    #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等。
    基于参数的模型或基于距离的模型,都是要进行特征的归一化。

    相关文章

      网友评论

          本文标题:sklearn中的数据预处理

          本文链接:https://www.haomeiwen.com/subject/kdgnxxtx.html