数据转换

数据变换是数据准备的重要环节,它通过数据平滑、数据聚集、数据概化和规范化等方式将数据转换成适用于数据挖掘的形式。

数据平滑:去除数据中的噪声,将连续数据离散化。可以采用分箱、聚类和回归的方式进行数据平滑。

数据聚集:对数据进行汇总。

数据概化:将数据由较低的概念抽象成为较高的概念,比如说上海、杭州、深圳、北京可以概化为中国。

数据规范化:使属性数据按比例缩放。

特征工程:对现有属性进行运算,构造新的属性。

数据规范化的几种方法:

1. Min-max 规范化

将原始数据变换到 [0,1] 的空间中;新数值 =(原数值 - 极小值)/(极大值 - 极小值)。

2. Z-Score 规范化

新数值 =(原数值 - 对应项的均值)/对应项的 标准差。

比如,A的成绩80分,满分100分;B的成绩也是80分,满分500分。那么如何比较他们的成绩了?

假设 A 所在的班级平均分为 80,标准差为 10。B 所在的班级平均分为 400,标准差为 100。那么 A 的新数值 =(80-80)/10=0

B 的新数值 =(80-400)/100=-3.2。那么0>-3.2,认为A的成绩比B的好。

我们能看到 Z-Score 的优点是算法简单,不受数据量级影响,结果易于比较;缺点是:需要均值和标准差这两个特征,且新数值只能用于比较,没有实际意义。

3. 小数定标规范化

小数定标规范化就是通过移动小数点的位置来进行规范化。

 

Python 的 SciKit-Learn 库使用

SciKit-Learn 是 Python 的重要机器学习库,它帮我们封装了大量的机器学习算法,比如分类、聚类、回归、降维等。

1. 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.        ]]

2. Z-Score 规范化

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]]

Z-Score 规范化将数据集进行了规范化,数值都符合均值为 0,方差为 1 的正态分布。但请注意,新值的区间可就没有[-1,1]的约束了!

3. 小数定标规范化

# 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]]

 

数据挖掘中数据变换比算法选择更重要

如果不进行变换的话,要不就是维数过多,增加了计算的成本,要不就是数据过于集中,很难找到数据之间的特征。

当然不是所有自然界的数据都需要正态分布,我们也可以根据实际的情况进行设计,比如取对数 log,或者神经网络里采用的激励函数等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值