美文网首页
六、数据特征预处理

六、数据特征预处理

作者: 一闪一闪亮日日日日日日 | 来源:发表于2018-10-21 12:44 被阅读0次

    1 归一化

    sklearn.preprocessing import MinMaxScaler
    (一)归一化处理:统计人觉得几个特征同等重要时,要用归一化
    (二)目的:使得一个特征不会对最终结果不会造成更大影响
    (三)缺点:受异常点影响大,鲁棒性较差,只适合传统精确小数据场景
    (四)公式:x'=(x-min)/(max-min) x''=x'(mx-mi)+mi
    其中min为每列最小,max为每列最大,默认mx=1,mi=0,可以通过feature_range=(mi,mx)修改

    from sklearn.preprocessing import MinMaxScaler
    def mm():
        mm = MinMaxScaler(feature_range=(0,1))
        data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
        print(data)
    if __name__=='__main__':
        mm()
    

    输出:
    [[1. 0. 0. 0. ]
    [0. 1. 1. 0.83333333]
    [0.5 0.5 0.6 1. ]]

    2 标准化(常用)

    (一)标准化公式:x'=(x-mean)/方差,作用于每一列
    把每个数据转换为均值为0,方差为1的范围内
    (二)优点:不容易受异常值的影响,数据多时比较稳定

    from sklearn.preprocessing import StandardScaler
    def std():
        std = StandardScaler()
        data = std.fit_transform([[1,-1,3],[2,4,2],[4,6,-1]])
        print(data)
    if __name__=='__main__':
        std()
    

    输出:
    [[-1.06904497 -1.35873244 0.98058068]
    [-0.26726124 0.33968311 0.39223227]
    [ 1.33630621 1.01904933 -1.37281295]]

    3 缺失值

    缺失值可以用pandas处理也可以用sklearn.preprocessing.imputer处理
    首先来看sklearn

    from sklearn.preprocessing import Imputer
    def im():
        im = Imputer(missing_values='NaN',strategy='mean',axis=0)
        data = im.fit_transform([[1,2],[np.nan,3],[7,8]])
        print(data)
    if __name__=='__main__':
        im()
    

    输出:
    [[1. 2.]
    [4. 3.]
    [7. 8.]]

    pandas 处理缺失值

    import pandas
    from pandas import DataFrame
    data = DataFrame([[1,2,5,3,4],[1,4,'?',6,8],[1,3,1,9,6]])
    print(data)
    data = data.replace('?',np.nan)
    print(data.fillna(data.mean()))
    

    输出:
    data:
    0 1 2 3 4
    0 1 2 5 3 4
    1 1 4 ? 6 8
    2 1 3 1 9 6
    处理后的data
    0 1 2 3 4
    0 1 2 5.0 3 4
    1 1 4 3.0 6 8
    2 1 3 1.0 9 6

    相关文章

      网友评论

          本文标题:六、数据特征预处理

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