正态分布
正态分布也叫作常态分布,就是正常状态下,呈现分布的情况。正态分布曲线反映了随机变量的分布规律。理论上的正态分布曲线是一条中间高,两端逐渐下降且完全对称的钟形曲线。
image.png数据变换在数据分析中的角色
数据挖掘前的准备工作:
image.png
数据变换是数据准备的重要环节,常用的变换方法有:
- 数据平滑: 去除数据的噪声,将连续数据离散化。可采用分箱,聚类和回归的方法。
- 数据聚集: 对数据进行汇总,在SQL中有些聚集函数可以供我们操作,如Max,Sum等。
- 数据概化: 将数据由低的概念抽象成较高的概念,减少数据复杂度。比如上海,杭州,深圳,北京可以概化为中国。
- 数据规范化: 使属性数据按比例缩放,将原来的数值映射到一个新的特定区域,常用Min-Max规范化,Z-core规范化,按小数定标规范化。
- 属性构造: 构造出新的属性成为新的属性集中。
数据规范的几种方法
-
Min-Max规范化
将原始数据变换到[0,1]空间,用公式表示就是:新数值 = (原数值 - 极小值)/(极大值 - 极小值) -
Z-Score规范化
将数据规范到0均值,1方差的标准正态分布上,减少百分制80和500分制80的数据值差异问题
新数值 = (原数值 - 均值)/ 标准差 -
小数定标规范化
将数据转化为[-1,1]区间中,小数定标规范化通过移动属性A的值的小数点位置进行规范化。小数点的移动位数依赖于A的最大绝对值。
新数值 = 原数值 / 最大绝对值位数
Python 的 SciKit-Learn 库使用
- Min-Max规范化
# coding:utf-8
from sklearn import preprocessing
import numpy as np
# 初始化数据,每一行表示一个样本,每一列表示一个特征
x = np.array([[ 0., -3., 1.],
[ 3., 1., 2.],
[ 0., 1., -1.]])
# **将数据进行 [0,1] 规范化**
min_max_scaler = preprocessing.MinMaxScaler()
minmax_x = min_max_scaler.fit_transform(x)
print (minmax_x)
运行结果:
[[0. 0. 0.66666667]
[1. 1. 1. ]
[0. 1. 0. ]]
- Z-Score规范化
# coding:utf-8
from sklearn import preprocessing
import numpy as np
# 初始化数据,每一行表示一个样本,每一列表示一个特征
x = np.array([[ 0., -3., 1.],
[ 3., 1., 2.],
[ 0., 1., -1.]])
# 将数据进行 Z-Score 规范化
scaled_x = preprocessing.scale(x)
print (scaled_x)
运行结果:
[[-0.70710678 -1.41421356 0.26726124]
[ 1.41421356 0.70710678 1.06904497]
[-0.70710678 0.70710678 -1.33630621]]
- 小数定标规范化
# coding:utf-8
from sklearn import preprocessing
import numpy as np
# 初始化数据
x = np.array([[ 0., -3., 1.],
[ 3., 1., 2.],
[ 0., 1., -1.]])
# 小数定标规范化
j = np.ceil(np.log10(np.max(abs(x))))
scaled_x = x/(10**j)
print (scaled_x)
运行结果:
[[ 0. -0.3 0.1]
[ 0.3 0.1 0.2]
[ 0. 0.1 -0.1]]
数据挖掘中数据变换比算法选择更重要
我们要让数据满足一定的规律,达到规范性的要求,便于进行挖掘,这是数据变换的作用。
image.png
网友评论