• 数据标准化处理(简单整理)


    数据标准化处理

    import numpy as np
    raw_samples = np.array([
        [3,-1.5,2,-5.4],
        [0,4,-0.3,2.1],
        [1,3.3,-1.9,-4.3]])
    print(raw_samples)
    print(raw_samples.mean(axis=0))   # 求各个列的均值
    print(raw_samples.std(axis=0))    # 求各个列的标准差
    
    print("=============方法1:对raw_samples矩阵做标准差标准化处理====================")
    #  标准化处理(标准正态分布):是让矩阵中的每列的均值为0,标准差为1
    from sklearn.preprocessing import scale
    s=scale(raw_samples)   # 对raw_samples矩阵做标准差标准化处理
    print(s)
    print(s.mean(axis=0))
    print(s.std(axis=0))
    
    print("==========方法2:对raw_samples矩阵做(0,1)缩放标准化处理====================")
    # (0,1)缩放:是让矩阵中的每列中每行的各个特征值缩放成为0到1之间值
    from sklearn.preprocessing import MinMaxScaler
    mms = MinMaxScaler(feature_range=(0,1)).fit_transform(raw_samples)
    print(mms)
    print(mms.min(axis=0))
    print(mms.max(axis=0))
    
    print("=========方法3:对raw_samples矩阵做归一化标准化处理====================")
    # 归一化:用矩阵中每行的各个特征值除以该行所有特征值之和,再对每行所得的值做绝对值之和,此时每行中
    #          各个列相加得出的值都是1
    from  sklearn.preprocessing import normalize
    nor_samples = normalize(raw_samples,norm="l1")
    print(nor_samples)
    print(np.abs(nor_samples).sum(axis=1))
    
    
    print("=========方法4:对raw_samples做二值化标准化处理======================")
    # 二值化:根据一个事先设定的阀值,将样本矩阵中不大于阀值的元素设定为0,大于阀值的元素设定为1
    # 二值化信息有所损失,二值化后无法知道原始数据具体是多少
    from  sklearn.preprocessing import Binarizer
    bin = Binarizer(threshold=1.4)  # 1.4的阀值是自己设定的
    bin_samples = bin.transform(raw_samples)
    print(bin_samples)
    
    print("=========方法5:对raw_samples做独热编码标准化处理======================")
    
    raw_samples =np.array([
        [1,3,2],
        [7,5,4],
        [1,8,6],
        [7,3,9]])
    print(raw_samples)
    
    # 创建独热编码器
    from sklearn.preprocessing import OneHotEncoder
    print("==============紧凑格式===================")
    ohe = OneHotEncoder(dtype=int)  # sparse 表示是否采用紧缩格式(即只记录非0格式),默认为真1
    ohe_samples = ohe.fit_transform(raw_samples)
    print(ohe_samples)   # 最后出来的结果是只记录1 的结果
    # (0, 5)  1    表示第0行第5列是1
    # (0, 2)  1    表示第0行第2列是1
    # (0, 0)  1    表示第0行第0列是1
    
    print("==============非紧凑格式===================")
    ohe1 = OneHotEncoder(sparse=False,dtype=int)  # sparse 表示是否采用紧缩格式,默认为真1
    ohe_samples = ohe1.fit_transform(raw_samples)
    print(ohe_samples)
    
    
    
    print("=============方法6:将分类变量转为数值型:用标签编码============")
    # 标签编码:将一列字符串形式的特征值,按照字典排序,用每个字符在排序序列中的索引号表示该字符
    raw_samples = np.array(["audi","ford","audi",
                           "toyota","ford","bmw",
                           "toyota","audi"])
    from sklearn.preprocessing import LabelEncoder
    lbe = LabelEncoder()
    lbe_samples = lbe.fit_transform(raw_samples)
    print(lbe_samples)   # 返回:[0 2 0 3 2 1 3 0]
    
    print("====用inverse_transform()将标签编码转回原始数据======")
    raw_samples = lbe.inverse_transform(lbe_samples)
    print(raw_samples)   # 返回:['audi' 'ford' 'audi' 'toyota' 'ford' 'bmw' 'toyota' 'audi']
  • 相关阅读:
    Python if __name__ == "__main__" 的含义
    自己用
    phpstorm && pycharm
    API Design for C++ 一本书值得一看
    std::set 使用
    Using Windows Web Services
    SOA 好好了解下
    NI Measurement Studio Enterprise 8.6
    那天看看
    内存映射 那天自己改改
  • 原文地址:https://www.cnblogs.com/wodexk/p/10308174.html
Copyright © 2020-2023  润新知