对于噪声数据理解以及Min-Max 规范化和 Score规范化(零-均值规范化)的实例【数据预处理】

本文正在参加「金石计划 . 瓜分6万现金大奖」

一.噪声数据

噪声数据(Noisy Data)就是无意义的数据,这个词通常作为损坏数据的同义词使用。

1.分箱:

  • 通过考察数据的“近邻”(周围的值)来光滑有序数据的值。局部光滑

2.回归:

  • 用一个函数(回归函数)拟合数据来光滑数据。

3.聚类:

  • 将类似的值聚集为簇A

4.其他:

  • 如数据归约、离散化和概念分层

1.1分箱

通过考察数据的“近邻”(周围的值)来光滑有序数据的值。局部光滑。

  • 划分:等频、等宽
  • 光滑:用箱均值、用箱中位数、用箱边界(去替换箱中的每个数据)
  • 箱中的最大和最小值被视为箱边界。箱中的每一个值都被最近的边界值替换。

1.2分箱法光滑数据

image-20221110194410187

1.3噪声数据

1.回归:

用一个函数(回归函数)拟合数据来光滑数据。

  • 线性回归

  • 多元线性回归

2.聚类:将类似的值聚集为簇。 检测离群点

噪声数据是有益处的。

1.4回归Regression

image-20221110194745289

1.5聚类Cluster Analysis

image-20221110194902707

1.6 数据清理作为一个过程

1.6.1 偏差检测

1.使用“元数据”:关于数据的数据。

  • 例如,每个属性的数据类型是什么?定义域是什么?

2.编码格式:存在使用不一致、数据表示不一致

  • 例如:日期“2015/12/08”和”08/12/2015"

3.字段过载:

  • 新属性的定义挤进已定义的属性的未使用(位)部分

4.唯一性规则:

  • 给定属性的每个值都必须不同于该属性的其他值。

5.连续性规则:

  • 属性的最低值和最高值之间没有缺失的值,并且所有的值还必须是唯一的(例如,检验数)

6.空值规则:

  • 说明空白、问号、特殊符号或指示空值条件的其他串的使用(例如,一个给定属性的值何处不能用),以及如何处理这样的值。

1.6.2 数据变换(纠正偏差)

  • 数据清洗工具:使用简单的领域知识(邮政地址知识和拼写检查),检查并纠正数据中的错误。 在清理多个数据源的数据时,这些工具依赖分析和模糊匹配技术。
  • 数据审计工具:通过分析数据发现规则和联系,并检测违反这些条件的数据来发现偏差。
  • 数据迁移工具:允许说明简单的变换。
  • ETL(提取/变换/装入)工具:允许用户通过图形用户界面说明变换。
  • 通常这些工具只支持有限的变换

1.6.3迭代

  • 需要迭代执行偏差检测和数据变换(纠正偏差)这两步过程。
  • -通常需要多次迭代才能达到满意的效果。

1.6.4 加强交互性

  • 数据清理工具:
    • kettle是一个开源的数据清理工具
  • 开发数据变换操作规范说明语言

二. 数据集成和变换

  • 数据集成合并多个数据源中的数据,存放在一个一致的数据库(如数据仓库)中。
  • 源数据可能包括多个数据库,数据立方或一般文件。
  • 数据变换将数据转换或统一成适合于挖掘的形式。

2.1 数据集成

1.实体识别

  • 元数据可帮助避免错误

2.属性冗余与相关性分析-

  • 相关分析

3.数据重复(元组冗余)

4.数据值冲突的检测与处理

  • 表示、比例或编码不同

2.2 数据变换

1.平滑:去掉数据中的噪声。技术包括分箱、回归、聚类。

2.聚集Aggregation:对数据进行汇总或聚集。

3.数据泛化(概化):使用概念分层,用高层概念替换低层或“原始”数据。

4.规范化:将属性数据按比例缩放,使之落入一个小的特定区间。最小-最大、Z-Score、按小数定标规范化。

5.属性构造(特征构造):由给定的属性构造新的属性并添加到属性集中,以帮助挖掘过程。可以帮助提高准确率和对高维数据结构的理解。

数据立方体聚集

image-20221110201242751

概念分层

image-20221110201518876

image-20221110201538554

2.3规范化

2.3.1 Min-Max 规范化(最小-最大规范化)

规范化公式:

image-20221110202252129

2.3.2 Min-Max 规范化(最小-最大规范化)例子代码(红酒数据集)

1.事先准备,采用红酒数据集,将数据拿出:

from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn.datasets import load_wine
wine = load_wine()
X = wine.data
y = wine.target
复制代码

2.支持向量机

from sklearn import svm
svm = svm.SVC()
复制代码

3.支持向量机 training score:

print("支持向量机 training score: ",svm.score(X,y))
svm.fit(wine_X,y)
复制代码

运行结果为:

image-20221110214149727

6.手动让其进行Min-Max 规范化(最小-最大规范化):

wind_X=X.copy()
for i in range(13):
    columu_X = X[:, i]
    wind_X[:, i] = (columu_X-columu_X.min())/(columu_X.max()-columu_X.min())
print(wind_X)

复制代码

7.对照组,输出之前的训练得分:

svm.fit(X,y)
print("支持向量机 training score: ",svm.score(X,y))
复制代码

8.支持向量机归一化后 training score:

svm.fit(wind_X,y)
print("支持向量机归一化后 training score: ",svm.score(wind_X,y))
复制代码

9.结果:可以看出,对其改善很大。

image-20221111101307189

2.3.4 缺点

1.若存在离群点,可能影响规范化

2.若在规范化后添加新的数据,当新数据落在原数据的区间[minA, max A ]之外,将导致“越界” 错误。

2.3.5 Score规范化(零-均值规范化)

z-score规范化(零均值规范化):属性A的值基于A的平均值和标准差规范化。

image-20221110202950708

对离群点不敏感

2.3.6 Score规范化(零-均值规范化)例子代码(红酒数据集)

1.事先准备,采用红酒数据集,将数据拿出:

from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn.datasets import load_wine
wine = load_wine()
X = wine.data
y = wine.target
复制代码

2.支持向量机

from sklearn import svm
svm = svm.SVC()
复制代码

3.使用模型里的按列归一化:

from sklearn import preprocessing
#数据预处理:按列归一化
wine_X=preprocessing.scale(X)
print(wine_X)
复制代码

4.输出结果为:

image-20221111101611865

5.手动撰写按列归一化

wind_X=X.copy()
for i in range(13):
    columu_X = X[:, i]
    wind_X[:, i]=(columu_X-columu_X.mean())/columu_X.std()
print(wind_X)563
复制代码

6.结果查看:

image-20221111101726242

猜你喜欢

转载自juejin.im/post/7166502046361714702