一.噪声数据
噪声数据(Noisy Data)就是无意义的数据,这个词通常作为损坏数据的同义词使用。
1.分箱:
- 通过考察数据的“近邻”(周围的值)来光滑有序数据的值。局部光滑
2.回归:
- 用一个函数(回归函数)拟合数据来光滑数据。
3.聚类:
- 将类似的值聚集为簇A
4.其他:
- 如数据归约、离散化和概念分层
1.1分箱
通过考察数据的“近邻”(周围的值)来光滑有序数据的值。局部光滑。
- 划分:等频、等宽
- 光滑:用箱均值、用箱中位数、用箱边界(去替换箱中的每个数据)
- 箱中的最大和最小值被视为箱边界。箱中的每一个值都被最近的边界值替换。
1.2分箱法光滑数据
1.3噪声数据
1.回归:
用一个函数(回归函数)拟合数据来光滑数据。
-
线性回归
-
多元线性回归
2.聚类:将类似的值聚集为簇。 检测离群点
噪声数据是有益处的。
1.4回归Regression
1.5聚类Cluster Analysis
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.属性构造(特征构造):由给定的属性构造新的属性并添加到属性集中,以帮助挖掘过程。可以帮助提高准确率和对高维数据结构的理解。
数据立方体聚集
概念分层
2.3规范化
2.3.1 Min-Max 规范化(最小-最大规范化)
规范化公式:
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)
运行结果为:
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.结果:可以看出,对其改善很大。
2.3.4 缺点
1.若存在离群点,可能影响规范化
2.若在规范化后添加新的数据,当新数据落在原数据的区间[minA, max A ]之外,将导致“越界” 错误。
2.3.5 Score规范化(零-均值规范化)
z-score规范化(零均值规范化):属性A的值基于A的平均值和标准差规范化。
对离群点不敏感
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.输出结果为:
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.结果查看: