数据准备基本流程 数据规范化的几种方法 利用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("----------")
?
相关推荐
chensen 2020-11-14
lwnylslwnyls 2020-11-06
ATenhong 2020-10-15
yanzhelee 2020-10-13
佛系程序员J 2020-10-10
guojin0 2020-10-08
佛系程序员J 2020-10-08
bluewelkin 2020-09-16
wwzaqw 2020-09-04
zhongdaowendao 2020-09-02
favouriter 2020-08-18
奎因amp华洛 2020-08-15
一青年 2020-08-13
千锋 2020-08-10
nangongyanya 2020-08-09
dongxurr 2020-08-08
明天你好 2020-08-03
kyelu 2020-08-03
Ashes 2020-08-03