zoukankan      html  css  js  c++  java
  • 数据准备基本流程 数据规范化的几种方法 利用SciKit库进行数据变换

    数据准备基本流程 数据规范化的几种方法 利用SciKit库进行数据变换

     

    数据准备流程

    数据清洗

    数据集成

    • 是什么?就是将多个数据源合并存放在一个数据仓库中

    • 数据集成的两种架构

      ETL(Extract、Transform、Load)即,(抽取、转换(合并表)、加载)

      • 常见ETL工具(开源):kettle、DataX、sqoop

      ELT

      • 与主流的ETL的区别是:在抽取后首先将结果写入目的地,然后通过数据库的聚合分析能力或外部计算框架来完成转换(如spark)

    数据变换

    ​ 通过以下方法针对算法对数据进行变换

    • 数据平滑---去除数据中的噪声,将连续数据离散化。
      • 分箱
      • 聚类
      • 回归
    • 数据聚集---对数据进行汇总
      • SQL(Max(),Sum())
    • 数据概化---用更高的概念替代更低的概念,减少数据复杂度
      • 比如上海、杭州、深圳、北京可以概化为中国
    • 数据规范化---使属性数据按比例缩放,将数值射到一个新的特定区域
      • 最小-最大规范化
      • Z-score规范化
      • 按小数定标规范化
    • 属性构造---构造出新的属性并添加到属性集中
      • simple,根据业务需要构造出需要使用的属性

    数据可视化

    • BI(商业智能分析)
      • Tableau、PowerBI、FineBI
    • 可视化大屏
      • DataV、FineReport
    • 前端可视化组件
    • Python库 Matplotlib、Seaborn等

     

    数据规范化的几种方法

    Min-max规范化

    • 将原始数据变换到[0,1]的空间中
    • new = (x - min) / (max - min)

    Z-Sorce规范化

    • 将含义不同的数据使用兴相同的标准来衡量

    • new = (x - mean )/ std

    • 上述是Z-Score的线性计算公式,用它将考试成绩变为正态分布的前提是,考试成绩本身就是成正泰分布的。

    • 如果考试成绩本身世偏太分布,就要使用非线性公式:

      # 先计算“百分等级”
      百分等级(年级)=100-(100x 年级名次 -50)/ 有效参加考试人数。
      这里百分等级是每个学生在该批学生中的相对位置
      
      # 再按照百分等级数去“标准正太分布表”中查询得出Z-Score值,这样的Z分值便是标准的正态分布,能够将偏态转换为标准正态
      

    小数定标规范化

    • 某列属性整体左右移动若干位小数点

     

    Python SciKit-learn

    from sklearn import preprocessing
    import numpy as np
    
    # 数据初始化,每行代表一个样本,每列代表一个特征值...就是说按列进行?
    data = np.array([[0., -3., 1.], [3., 1., 2.], [0., 1., -1.]])
    # 进行min-max规范化
    min_max_scaler = preprocessing.MinMaxScaler()
    minmax_data = min_max_scaler.fit_transform(data)
    print(minmax_data)
    print("----------")
    
    # 线性Z分
    scaled_data = preprocessing.scale(data)
    print(scaled_data)
    print("----------")
    
    # 小数定标
    j = np.ceil(np.log10(np.max(abs(data))))
    pointscaled_data = data/(10**j)
    print(pointscaled_data)
    # j解读为:对所有数取绝对值,然后对每一列取最大的(会有3个),然后计算他们对以十为底的对数值(这里一般都在[0,1]之内),然后向上取整
    # **的意思是乘方
    print("----------")
    

     

  • 相关阅读:
    j.u.c系列(01) ---初探ThreadPoolExecutor线程池
    mySql---or和in的效率问题(和<=、>=、between之间的关系)
    spring---aop(10)---Spring AOP中AspectJ
    spring---aop(9)---Spring AOP中引入增强
    设计模式系列---适配器模式
    spring---aop(8)---Spring AOP中optimize
    spring---aop(7)---Spring AOP中expose-proxy介绍
    spring---aop(6)---Spring AOP中ProxyFactoryBean介绍
    spring---aop(5)---Spring AOP的配置的背后的配置
    spring---aop(4)---Spring AOP的CGLIB动态代理
  • 原文地址:https://www.cnblogs.com/G-Aurora/p/13413957.html
Copyright © 2011-2022 走看看