需要源码请点赞关注收藏后评论区留言私信~~~
一、数据规约
数据归约(Data Reduction)用于在尽可能保持数据完整性的基础上得到数据的归约表示。也就是说,在归约后的数据集上挖掘将更有效,而且仍会产生相同或相似的分析结果
数据归约包括维归约、数量归约和数据压缩
1:维归约
维归约的思路是减少所考虑的随机变量或属性的个数,用的方法有属性子集选择、小波变换和主成分分析
属性子集选择是一种维归约方法,其中不相关、弱相关或冗余的属性或维被检测或删除。而后两种方法是原始数据变换或投影到较小的空间。
(1)逐步向前选择 由空属性集作为规约集的起始,迭代确定原属性集中最好的属性并添加到规约集中
(2)逐步向后删除 由整个属性集开始,在每次迭代中删除尚在属性集中最差的属性
(3)逐步向前选择和逐步向后删除的组合 每一步选择一个最好的属性,并在属性中删除一个最差的属性
(4)决策树归纳 由给定的数据构造决策树,不出现在树中的所有属性假定是不相关的,出现在树中的属性形成规约后的属性子集
这些方法的约束条件可以不同,可以使用一个度量阈值决定何时终止属性选择过程
傅里叶变换-理解傅里叶变换,需要理解两个核心概念:
时域:时间和振幅的关系图,横坐标是时间,纵坐标是振幅
频域:频率和振幅的关系图,横坐标是频率,纵坐标是振幅
任何「周期(T)「函数,都可以使用」傅立叶级数展开法」将它们分解为有限或无限个不同「频率」不同「振幅」的正弦函数的叠加。傅里叶级数展开公式如下:
如果把函数看成离散点构成的向量,那么就是这些正弦函数「基向量」的线性组合
2:小波变换
小波变换是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具
将图像进行小波变换并显示
代码如下
import numpy as np import pywt import cv2 as cv import matplotlib.pyplot as plt img = cv.imread("lena.jpg") img = cv.resize(img, (448, 448)) # 将多通道图像变为单通道图像 img = cv.cvtColor(img, cv.COLOR_BGR2GRAY).astype(np.float32) plt.figure('二维小波一级变换') coeffs = pywt.dwt2(img, 'haar') cA, (cH, cV, cD) = coeffs # 将各个子图进行拼接,最后得到一张图 AH = np.concatenate([cA, cH+255], axis=1) VD = np.concatenate([cV+255, cD+255], axis=1) img = np.concatenate([AH, VD], axis=0) # 显示为灰度图 plt.axis('off') plt.imshow(img,'gray') plt.title('result') plt.show()
3:主成分分析
主成分分析(Principal Component Analysis,PCA)又称Karhunen-Loeve或K-L方法,用于搜索k个最能代表数据的n维正交向量,是最常用的一种降维方法。PCA通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等,在数据压缩消除冗余和数据噪音消除等领域也有广泛的应用
PCA的主要目的是找出数据里最主要的方面代替原始数据
sklearn实现鸢尾花数据降维,将原来4维的数据降维为2维
降维后样本点分布如下
import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets import load_iris data = load_iris() y = data.target x = data.data pca = PCA(n_components = 2) #加载PCA算法,设置降维后主成分数目为2 reduced_x = pca.fit_transform(x) #对样本进行降维 print(reduced_x) #在平面中画出降维后的样本点的分布 red_x,red_y = [],[] blue_x,blue_y = [],[] green_x,green_y = [],[] for i in range(len(reduced_x)): if y[i] ==0: red_x.append(reduced_x[i][0]) red_y.append(reduced_x[i][1]) elif y[i]==1: blue_x.append(reduced_x[i][0]) blue_y.append(reduced_x[i][1]) else: green_x.append(reduced_x[i][0]) green_y.append(reduced_x[i][1]) plt.scatter(red_x,red_y,c='r',marker='x') plt.scatter(blue_x,blue_y,c='b',marker='D') plt.scatter(green_x,green_y,c='g',marker='.') plt.show()
数量规约
数量归约(Numerosity Reduction)用替代的、较小的数据表示形式换原始数据。这些技术可以是参数或者非参数的。对于参数方法而言,使用模型估计数据,使得一般只需要存放模型参数而不是实际数据(离群点需存放),如回归和对数-线性模型
存放数据规约表示的非参数方法包括: 直方图、聚类、抽样和数据立方体聚类
1. 回归和对数线性模型 回归和对数模型可以用来近似给定的数据
2. 直方图 将直方图中桶的个数由观测值的数量n减少到k个,使数据变成一块一块的呈现
3. 聚类 聚类后用簇中的代表代替实际数据
4. 抽样 通过选取随机样本子集,实现小数据代表大数据的过程。抽样过程包括简单随机抽样、簇抽样和分层抽样
5. 数据立方体聚类 数据立方体是将细粒度的属性聚集到粗粒度的属性
数据压缩(Data Compression)使用变换,一遍得到原始数据的归约或“压缩”表示。如果数据可以在压缩后的数据重构,而不损失信息,则该数据归约被称为无损的。如果是近似重构原数据,称为有损的
基于小波变换的数据压缩是一种非常重要的有损压缩方法
创作不易 觉得有帮助请点赞关注收藏~~~