数据预处理(五)——数据规约

主要内容:
数据预处理的必要性
数据清洗
数据集成
数据标准化
数据规约
数据变换与离散化
利用sklearn进行数据预处理
小结

五、数据规约

数据归约(Data Reduction)用于在尽可能保持数据完整性的基础上得到数据的归约表示。也就是说,在归约后的数据集上挖掘将更有效,而且仍会产生相同或相似的分析结果。数据归约包括维归约、数量归约和数据压缩

(一)维归约

维归约的思路是减少所考虑的随机变量或属性的个数,使用的方法有属性子集选择、小波变换和主成分分析。属性子集选择是一种维归约方法,其中不相关、弱相关或冗余的属性或维被检测或删除。而后两种方法是原始数据变换或投影到较小的空间。

1.属性子集选择
属性子集选择通过删除不相关或者冗余属性(或维)减少数据量。
(1)逐步向前选择
(2)逐步向后删除
(3)逐步向前选择和逐步向后删除的组合
(4)决策树归纳

2.小波变换

小波变换是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。

将图像进行小波变换并显示。
原图:
在这里插入图片描述

import cv2 as cv

import numpy as np
import pywt  # 小波变换的包
import cv2 as cv  # pip install opencv-python
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')  # 一维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的主要目的是找出数据里最主要的方面代替原始数据。

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)用替代的、较小的数据表示形式换原始数据。这些技术可以是参数或者非参数的。对于参数方法而言,使用模型估计数据,使得一般只需要存放模型参数而不是实际数据(离群点需存放),如回归和对数-线性模型
存放数据规约表示的非参数方法包括: 直方图、聚类、抽样和数据立方体聚类

(三)数据压缩

数据压缩(Data Compression)使用变换,一遍得到原始数据的归约或“压缩”表示。如果数据可以在压缩后的数据重构,而不损失信息,则该数据归约被称为无损的。如果是近似重构原数据,称为有损的。基于小波变换的数据压缩是一种非常重要的有损压缩方法。

  • 5
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据预处理数据科学中非常重要的一个环节,数据预处理的目的是对原始数据进行清洗、转换和集成,以便于进一步的分析和建模。数据预处理可以极大地影响最终分析和建模的结果,因此在数据预处理过程中需要仔细处理。 数据预处理进阶包括以下几个方面: 1. 数据清洗:数据清洗是数据预处理的第一步,主要是对原始数据进行检查、修复和删除不良数据,例如缺失值、异常值、重复值等。数据清洗可以提高数据质量,减少建模时的误差。 2. 特征选择:特征选择是选择最相关的特征,以便于进行建模和分析。特征选择可以减少特征的数量,提高模型的准确性和泛化能力。 3. 特征提取:特征提取是将原始数据转换为更具有代表性的特征。例如,将文本转换为词袋模型或者TF-IDF模型。特征提取可以提高模型的准确性和泛化能力。 4. 数据集成:数据集成是将来自不同数据源的数据合并成一个数据集,以便于进行分析。数据集成可以减少数据冗余,提高数据质量。 5. 数据变换:数据变换是将数据转换为适合分析的形式。例如,将连续的数值数据离散化,或者进行归一化。数据变换可以提高模型的准确性和泛化能力。 总之,数据预处理数据科学中非常重要的一个环节。通过数据清洗、特征选择、特征提取、数据集成和数据变换等方法,可以提高数据质量,减少建模时的误差,提高模型的准确性和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shi_jiaye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值