来自🥬🐶程序员 Truraly | 田园 的博客,最新文章首发于:田园幻想乡 | 原文链接 | github (欢迎关注)
文章目录
- 3.3.1 数据的中心趋势
- 平均数和加权平均数
- 众数,中位数和均值
- 描述数据的离散程度 & 箱线图
- 其他描述数据的方法
- 3.4 数据清洗
- 3.4.1 缺失值
- 3.4.2 数据清洗
- 3.5 数据集成和转换
- 3.5.3 数据转换
- 3.6 数据规约和数据变换
- 3.6.2 数据离散化
数据类型:
- 名称型:区别性 比如:性别
- 顺序型:区别性,顺序性 比如:身高
- 间隔型:区别性,顺序性,可加减 比如:温度
- 比率型:区别性,顺序性,可加减,可乘除 比如:百分比
为什么要预处理数据:
- 数据不完整,比如缺失值
- 数据不一致,比如单位不一致
- 有噪声,比如错误数据
3.3.1 数据的中心趋势
平均数和加权平均数
首先这里有一组数据
1,,53,22,39,73,9,14
(算数)平均值:
x ‾ = 1 n ∑ i = 1 n x i \overline{x}=\frac{1}{n}\sum_{i=1}^{n}x_{i} x=n1∑i=1nxi
加权平均值:
x ‾ = ∑ i = 1 n w i x i ∑ i = 1 n w i \overline{x}=\frac{\sum_{i=1}^{n}w_{i}x_{i}}{\sum_{i=1}^{n}w_{i}} x=∑i=1nwi∑i=1nwixi
其中: w i 是权重 x i 是数据 其中: w_{i} 是权重 x_{i} 是数据 其中:wi是权重xi是数据
众数,中位数和均值
参考资料:偏态分布的左偏右偏如何理解?| 知乎
众数:出现次数最多的数
中位数:将数据从小到大排列,中间的数
均值:平均数
上图情况为左偏态,反之为右偏态,中间为正态
描述数据的离散程度 & 箱线图
参考资料:箱形图 | 百度
- 最小值(0 分位数)Q0
- 最大值(1 分位数)
- 中位数(0.5 分位数)Q2 (n+1)/2 位
- 四分位数(0.25 分位数,0.75 分位数)Q1 Q3 (n+1)/4 位 (3n+3)/4 位
中间四分位数极差:IQR = Q3 - Q1
上限:Q3 + k * IQR
下限:Q1 - k * IQR
k 为一个常数,经验值为 1.5,区间外的数据为离群点,可根据情况忽视或者删除
EG:
1 2 2 5 6 9 9
Q0 = 1
Q1 = 2
M = 5
Q3 = 9
1 2 2 5 6 7 8 9 9
Q0 = 1
Q1 = 第2.5位 = 2
M = 第5位 = 6
Q3 = 第7.5位 = 8*0.5+9*0.5 = 8.5
1 2 3 4 5 6 7 8
Q0 = 1
Q1 = 第2.25位 = 2*0.75+3*0.25 = 2.25
M = 第4.5位 = 4.5
Q3 = 第6.75位 = 6*0.25+7*0.75 = 6.75
其他描述数据的方法
直方图:横轴为数据,纵轴为频数
分位图:横轴为数据,纵轴为累计频数
Q-Q 图:横轴为理论分位数,纵轴为样本分位数
散点图:横轴为数据,纵轴为数据
3.4 数据清洗
3.4.1 缺失值
缺失值的处理:
- 整条数据删除
- 人工填写
- 填写统一值
- 使用均值或者中位数填写(减少数据的方差)
- 使用类似数据的均值或者中位数填写(进一步减少影响)
3.4.2 数据清洗
针对数据的噪声,比如错误数据,重复数据,不一致数据
使用分箱方法,将数据分为多个箱子,然后将箱子中的数据替换为箱子的均值,这样可以减少噪声的影响(数据平滑)
- 等宽分箱:将数据分为相同宽度的箱子,比如 0-10,10-20,20-30,依次将数据放入对应的箱子(箱子内数据不一致)。宽度一般为
w = m a x ( d a t a ) − m i n ( d a t a ) N w=\frac{max(data)-min(data)}{N} w=Nmax(data)−min(data)
- 等频分箱:将数据平等分为 n 份,每份数据个数相同
EG:
4 8 9 15 21 21 24 25 26 28 29 34
等宽分箱:
w = (34-4)/3 = 10
[4,14) | [14,24) | [24,34]
4 8 9 | 15 21 21 | 24 25 26 28 29 34
等频分箱:
w = 12/3 = 4 箱
4 8 9 15 | 21 21 24 25 | 26 28 29 34
3.5 数据集成和转换
3.5.3 数据转换
数据规范化:
- 最大最小规范化:将数据转换到某一区间。比如[0,1],公式为:
X ∗ = X − X m i n X m a x − X m i n X^{*}=\frac{X-X_{min}}{X_{max}-X_{min}} X∗=Xmax−XminX−Xmin
- Z-Score 规范化:将数据转换为均值为 0,标准差为 1 的数据。公式为:
X ∗ = X − X ‾ S X^{*}=\frac{X-\overline{X}}{S} X∗=SX−X
其中:
X
‾
为均值
\overline{X} 为均值
X为均值
S 为标准差
S = 1 n ∑ i = 1 n ( X i − X ‾ ) 2 S=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(X_{i}-\overline{X})^{2}} S=n1∑i=1n(Xi−X)2
3.6 数据规约和数据变换
数据立方体聚合:将数据按照维度进行聚合,比如按照时间维度,地理维度,产品维度等
线性回归分析:使用线性方程拟合数据,然后使用方程代替数据
采样方法:对于类似的一个数据簇,可以使用其中一部分数据代替整个簇,要注意在整体中每个簇代替的数据比例要相同
3.6.2 数据离散化
数据离散化:将连续数据转换为离散数据,比如将年龄分为 0-10,10-20,20-30 等
数据离散化的方法:
- 基于信息增益的方法:使用熵来衡量数据的离散程度,熵越大,数据越离散,熵越小,数据越集中。使用信息增益来衡量数据的离散程度,信息增益越大,数据越离散,信息增益越小,数据越集中。信息增益的计算公式为:
I ( S , T ) = E n t r o p y ( S ) − ∑ v ∈ T ∣ S v ∣ ∣ S ∣ E n t r o p y ( S v ) I(S,T) = Entropy(S) - \sum_{v\in T}\frac{|S_{v}|}{|S|}Entropy(S_{v}) I(S,T)=Entropy(S)−∑v∈T∣S∣∣Sv∣Entropy(Sv)
其中:
E n t r o p y ( S ) = − ∑ i = 1 n p i l o g 2 p i Entropy(S) = -\sum_{i=1}^{n}p_{i}log_{2}p_{i} Entropy(S)=−∑i=1npilog2pi
S 为数据集, T 为数据集的一个属性, S v 为 T 的一个值, p i 为 S v 中第 i 个类别的概率 S 为数据集,T 为数据集的一个属性,S_{v} 为 T 的一个值,p_{i} 为 S_{v} 中第 i 个类别的概率 S为数据集,T为数据集的一个属性,Sv为T的一个值,pi为Sv中第i个类别的概率
这个东西后面 ID3 决策树会用到
- 基于卡方检验的方法:使用卡方检验来衡量数据的离散程度,卡方检验越大,数据越离散,卡方检验越小,数据越集中。卡方检验的计算公式为:
χ 2 = ∑ i = 1 n ( A i − E i ) 2 E i \chi^{2} = \sum_{i=1}^{n}\frac{(A_{i}-E_{i})^{2}}{E_{i}} χ2=∑i=1nEi(Ai−Ei)2
其中:
A i 为实际值, E i 为期望值 A_{i} 为实际值,E_{i} 为期望值 Ai为实际值,Ei为期望值
- 基于自然分区的方法:使用人工的方式将数据分为多个区间,比如年龄分为 0-10,10-20,20-30 等
————————————————
版权声明:本文为 田园幻想乡 的原创文章,遵循 CC 4.0 BY-NA-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:http://truraly.fun/课程笔记/数据挖掘/【3】数据预处理.html