十五、数据归约

1.数据归约的概念

1.1 数据归约

数据规约方法类似数据集的压缩,它通过维度的减少或者数据量的减少,来达到降低数据规模的目的。

  • 数据归约策略概述
  • 维度归约
  • 数量归约

2 数据归约策略

对于小型或中型数据集,一般的数据预处理步骤已经足够。但对真正大型数据集来讲,在应用数据挖掘技术以前,更可能采取一个中间的、额外的步骤-数据归约。

  • 计算时间:较简单的数据,即经过数据归约后的结果,可减少数据挖掘消耗的时间。
  • 预测/描述精度:估量了数据归纳和概括为模型的好坏。
  • 数据挖掘模型的描述:简单的描述通常来自数据归约,这样模型能得到更好理解。
  • 数据归约的策略:维归约、数量归约
    1、维归约减少所考虑的随机变量或属性的个数。代表方法为小波变换、主成分分析、属性集选择。
    2、数量规约用替代的、较小的数据表示形式替换原数据。代表方法为线性回归等。

3 维度归约

3.1 维归约-小波变换的应用

  • 字符串压缩在整合数据源的过程中,很可能会出现这些情况:
    1、有丰富的理论和调优的算法
    2、典型的有损压缩
    3、但是只有有限的操作是可行的
  • 音频/视频的压缩
    1、通常是有损压缩,逐步细化
    2、有时候小片段的信号可重构,而不需要重建整个信号
    小波变换的应用如下图所示:
    在这里插入图片描述
    在这里插入图片描述

3.2 主成分分析

主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
在这里插入图片描述

3.3 主成分分析案例——生成随机数据并可视化**

在这里插入图片描述

3.4 主成分分析案例——不降维**

观察投影后的三个维度的方差分布。
在这里插入图片描述

3.5 主成分分析案例——降维**

在这里插入图片描述

3.6 属性选择

属性选择也称为特征选择,特征选择时通过删除不相关或冗余的属性来减少维度与数据量。其目的是:定位最小属性集,使得数据的概率分布尽可能接近使用所有属性得到的原分布,简单说,就是从全部属性中选取一个特征属性子集,使构造出来的模型更好。

  • 特征集选择的步骤一般是:建立子集集合、构造评价函数、构建停止准则、验证有效性。
  • 选择特征集的方式一般有:序列向前、序列向后、序列前后组合、决策树方式

4 数量归约

4.1 参数化归约

参数化数据归约可以用回归模型与对数线性模型来实现。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aARw8G0x-1583803725622)(07.png)]

4.2 非参数归约

非参数化数据归约包括直方图、抽样、数据立方体聚集等方法。
-直方图方法就是分箱。
-抽样。通过选取随机样本(子集),实现用小数据代表大数据的过程。
-数据立方体聚集。数据立方体聚集帮助我们从低粒度的数据分析聚合成汇总粒度的数据分析

5. 完整代码

5.1 代码结构

在这里插入图片描述

5.2 代码

# *-* coding:utf-8

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import make_blobs
from sklearn.decomposition import PCA
np.seterr(invalid='ignore')

# X为样本特征,Y为样本簇类别, 共1000个样本,每个样本3个特征,共4个簇
X, y = make_blobs(n_samples=10000, n_features=3,
                  centers=[[3, 3, 3], [0, 0, 0], [1, 1, 1], [2, 2, 2]],
                  cluster_std=[0.2, 0.1, 0.2, 0.2],
                  random_state=9)


# 1. 生成随机数并可视化
def generate_blobs():
    fig = plt.figure()
    plt.subplot(111)
    Axes3D(fig, rect=[0, 0, 1, 1], elev=30, azim=20)
    plt.scatter(X[:, 0], X[:, 1], X[:, 2], marker='o')
    plt.show()


# 2. 不降维,制作投影,看数据的方差分布
def pca_none():
    pca = PCA(n_components=3)
    pca.fit(X)
    print(pca.explained_variance_ratio_)
    print(pca.explained_variance_)


# 3. 降维度
def pca():
    pca = PCA(n_components=2)
    pca.fit(X)
    print(pca.explained_variance_ratio_)
    print(pca.explained_variance_)

    # 降维后展示
    X_new = pca.transform(X)
    plt.scatter(X_new[:, 0], X_new[:, 1], marker='o')
    plt.show()

def main():
    generate_blobs()
    #pca()


def main():
    generate_blobs()
    #pca()

if __name__ == '__main__':
    main()
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值