zoukankan      html  css  js  c++  java
  • 3.9 标准化,让运营数据落入相同的范围

    参考:《Python数据分析和运营化处理》

    数据标准化是一种数据预处理操作,通过处理不同规模和量纲的数据,使其缩放到相同的数据区间,例如[0, 1],或[-1, 1],减少了因为数据规模和分布差异的不同造成对模型的影响。避免“大数吃小数”现象。

    标准化方法 数学公式 优点 缺点 区间
    Z-Score (x^' = (x-mean)/std) 默认标准化方法,生成数据以0为均值,方差为1的正态分布。 一种中心化方法,会改变原有数据的分布结构,不适合用于对稀疏数据做处理。 [0,1]
    Max-Min (x^'=(x-min)/(max-min)) 应用广泛,对数据线性变换,能较好地保持原有数据结构。 可能出现分母为0,导致计算溢出。 [0,1]
    MaxAbs $x^'=x/ max $ 不破坏原有数据分布结构,可以用于稀疏数据、稀疏的CSR或CSC
    RobustScaler - 针对离群点做标准化处理,对数据中心华和数据的缩放健壮性有更强的参数控制能力。能最大限度地保留数据集中的异常。 - -

    稀疏数据:数据集会存在稀疏性特征,表现为标准差小,并有很多元素的值为0。常用来做协同过滤。对稀疏数据不能采用中心化的方式,否则会破坏稀疏数据的结构。

    协同过滤:系统利用用户喜好、共同经验群体来推荐用户感兴趣的信息,而用户通过评分、收藏等合作机制和系统协同达到过滤的目的。

    相关python程序:

    
    # 3.9 标准化,让运营数据落入相同的区间
    
    import numpy as np
    
    from sklearn import preprocessing
    
    import matplotlib.pyplot as plt
    
    
    
    data = np.loadtxt('data6.txt', delimiter='	') # 读取数据
    
    
    
    # Z-Score标准化
    
    zscore_scaler = preprocessing.StandardScaler() # 建立StandardScaler对象
    
    data_scale_1 = zscore_scaler.fit_transform(data) # StandardScaler标准化处理
    
    
    
    # Max-Min标准化
    
    minmax_scaler = preprocessing.MinMaxScaler() # 建立MinMaxScaler模型对象
    
    data_scale_2 = minmax_scaler.fit_transform(data) # MinMaxScaler标准化处理
    
    
    
    # MaxAbsScaler标准化
    
    maxabsscaler_scaler = preprocessing.MaxAbsScaler() # 建立MaxAbsScaler对象
    
    data_scale_3 = maxabsscaler_scaler.fit_transform(data) # MaxAbsScaler标准化处理
    
    
    
    # RobustScaler标准化
    
    robustscalerr_scaler = preprocessing.RobustScaler() # 建立RobustScaler标准化对象
    
    data_scale_4 = robustscalerr_scaler.fit_transform(data) # RobustScaler标准化标准化处理
    
    
    
    # 展示多网格结果
    
    data_list = [data, data_scale_1, data_scale_2, data_scale_3, data_scale_4] # 创建数据集列表
    
    scalar_list = [15, 10, 15, 10, 15, 10] # 创建点尺寸列表
    
    color_list = ['black', 'green', 'blue', 'yellow', 'red'] # 创建颜色列表
    
    merker_list = ['o', ',', '+', 's', 'p'] # 创建样式列表
    
    title_list = ['source data', 'zscore_scaler', 'minmax_scaler', 'maxabsscaler_scaler', 'robustscalerr_scaler'] # 创建标题列表
    
    for i, data_single in enumerate(data_list): # 循环得到索引和每个数值
    
        plt.subplot(2, 3, i + 1) # 确定子网格
    
        plt.scatter(data_single[:, :-1], data_single[:, -1], s=scalar_list[i], marker=merker_list[i],
    
                    c=color_list[i]) # 子网格展示散点图
    
        plt.title(title_list[i]) # 设置子网格标题
    
    plt.suptitle("raw data and standardized data") # 设置总标题
    
    plt.show() # 展示图形
    
    
  • 相关阅读:
    13 文件操作
    10 dict嵌套与升级
    08 连接和顺序列表
    01 Python 逻辑运算
    了解bordercollapse
    orchard模块编写的错误及其解决办法
    orchard文档之理解内容处理器
    orchard文档之理解数据访问
    orchard文档之orchard工作原理
    orchard文档之创建自定义表单
  • 原文地址:https://www.cnblogs.com/hugechuanqi/p/9839672.html
Copyright © 2011-2022 走看看