被广泛接受的数据质量的测量标准:
数据预处理的目的是,提高数据质量
主要任务
忽略元组(即删除单一对象)
当类标号缺少时通常这么做(监督式机器学习中训练集缺乏类标签)
当每个属性(即字段)缺少值比例比较大,效果比较差
手动填写:工作量大
自动填写:使用属性的平均值填充(常用)
df_values=df_values.drop((miss_data[miss_data['total']>200]).index,axis=1)
df_values['pres'].fillna(df_values['pres'].mean(),inplace=True)
df_values['mass'].fillna(df_values['mass'].mean(),inplace=True)
df_values['plas'].fillna(df_values['plas'].mean(),inplace=True)
箱型图检测离群数据:删除离群点
当离群点很多时,也会导致数据集规模变小
数据集成:将来自多个数据源的数据组合成一个连贯的数据源
即如上图,描述高度这个实体,这个数值不一样(单位不一样)
如:一个数据集中有3000m的成绩,另一个有5000m的成绩,则集成为跑步能力进行衡量
卡方测试 χ 2 ( c h i − s q u a r e ) t e s t χ 2 = ∑ ( O b s e r v e d − E x p e c t e d ) 2 E x p e c t e d ∙ χ 2 值越大,越有可能变量是相关的 ∙ 相关性并不意味着因果关系 卡方测试\\ \chi^2(chi-square)test\\ \chi^2=\sum\frac{(Observed-Expected)^2}{Expected}\\ \bullet \chi^2值越大,越有可能变量是相关的\\ \bullet 相关性并不意味着因果关系 卡方测试χ2(chi−square)testχ2=∑Expected(Observed−Expected)2∙χ2值越大,越有可能变量是相关的∙相关性并不意味着因果关系
第一个数是统计值,既喜欢下棋,又喜欢科幻小说
括号里的值是期望值
期望值的计算是通过对应行合计*对应列合计/总数
如450*300/1500=90
得到期望值和统计值之后,就可以得到对应的卡方测试
连续变量没有办法对统计值和期望值进行计数
皮尔逊相关系数 r p , q = ∑ ( p − p ‾ ) ( q − q ‾ ) ( n − 1 ) σ p σ q = ∑ ( p q ) − n p ‾ q ‾ ( n − 1 ) σ p σ q 皮尔逊相关系数\\ r_{p,q}=\frac{\sum(p-\overline{p})(q-\overline{q})}{(n-1)\sigma_p\sigma_q}=\frac{\sum(pq)-n\overline{p}\,\overline{q}}{(n-1)\sigma_p\sigma_q} 皮尔逊相关系数rp,q=(n−1)σpσq∑(p−p)(q−q)=(n−1)σpσq∑(pq)−npq
其中n是元组的数目,而p和q是各自属性的具体值, σ p \sigma_p σp和 σ q \sigma_q σq是各自的标准偏差
当r>0是,表示两变量正相关;r<0时,两变量负相关
当|r|=1时,表示两变量为完全线性相关,即函数关系
当r=0时,表示两变量间无线性相关关系
当0<|r|<1,表示两变量存在一定程度的线性相关。
一般可按三级划分
协方差与相关系数的转化 r p , q = C o v ( p , q ) σ p σ q 协方差与相关系数的转化\\ r_{p,q}=\frac{Cov(p,q)}{\sigma_p\sigma_q} 协方差与相关系数的转化rp,q=σpσqCov(p,q)
协方差公式 C o v ( p , q ) = E ( ( p − p ‾ ) ( q − q ‾ ) ) = ∑ i = 1 n ( p i − p ‾ ) ( q i − q ‾ ) n 可简化为: C o v ( A , B ) = E ( A ∗ B ) − A ‾ B ‾ 协方差公式\\ Cov(p,q)=E((p-\overline{p})(q-\overline{q}))\\ =\frac{\sum_{i=1}^n(p_i-\overline{p})(q_i-\overline{q})}{n}\\ 可简化为:\\ Cov(A,B)=E(A*B)-\overline{A}\,\overline{B} 协方差公式Cov(p,q)=E((p−p)(q−q))=n∑i=1n(pi−p)(qi−q)可简化为:Cov(A,B)=E(A∗B)−AB
其中n是元组的数目,而p和q是各自属性的具体值, σ p \sigma_p σp和 σ q \sigma_q σq是各自的标准偏差
正相关: C o v ( p , q ) > 0 Cov(p,q)>0 Cov(p,q)>0
负相关: C o v ( p , q ) < 0 Cov(p,q)<0 Cov(p,q)<0
独立性: C o v p ( p , q ) = 0 Covp(p,q)=0 Covp(p,q)=0
可具有某些对随机变量的协方差为0,但不是独立的
需要一些额外的假设,例如数据是否服从多元正态分布,做了协方差为0意味着独立
注意:
独立性 ⇒ C o v ( p , q ) = 0 \Rightarrow Cov(p,q)=0 ⇒Cov(p,q)=0
C o v ( p , q ) = 0 ⇏ Cov(p,q)=0\nRightarrow Cov(p,q)=0⇏独立性
将高维数据,通过一些方法将高维数据变成低维数据
例如:面对一份成绩的数据集,有6个科目作为属性(语数英物化生),我们可以通过降维将属性变成——文科成绩和理科成绩两个维度
原因:
随着维数的增加,数据会变得越来越稀疏
子空间的可能的组合将成倍增长
类似神经网络的机器学习方法,主要需要**学习各个特征的权值参数。**特征越多,需要学习的参数就越多,则模型越复杂
y ^ = s i g n ( ω 1 x 1 + ω 2 x 2 + . . . + ω d x d − t ) \widehat{y}=sign(\omega_1x_1+\omega_2x_2+...+\omega_dx_d-t)\\ y =sign(ω1x1+ω2x2+...+ωdxd−t)
机器学习训练集原则:模型越复杂,需要更多的训练集来学习模型参数,否则模型将欠拟合
因此,如果数据集维度很高,而训练集数目很少,在使用复杂的机器学习模型的时候,首选先降维
需要可视化
定义:记 x 1 , x 2 , . . . , x p 为原变量指标, z 1 , z 2 , . . . , z m ( m ≤ p ) { z 1 = l 11 x 1 + l 12 x 2 + . . . + l 1 p x p z 2 = l 21 x 1 + l 22 x 2 + . . . + l 2 p x p ⋮ z m = l m 1 x 1 + l m 2 x 2 + . . . + l m p x p 定义:记x_1,x_2,...,x_p为原变量指标,z_1,z_2,...,z_m(m\leq p)\\ \begin{cases} z_1=l_{11}x_1+l_{12}x_2+...+l_{1p}x_p\\ z_2=l_{21}x_1+l_{22}x_2+...+l_{2p}x_p\\ \vdots\\ z_m=l_{m1}x_1+l_{m2}x_2+...+l_{mp}x_p\\ \end{cases} 定义:记x1,x2,...,xp为原变量指标,z1,z2,...,zm(m≤p)⎩ ⎨ ⎧z1=l11x1+l12x2+...+l1pxpz2=l21x1+l22x2+...+l2pxp⋮zm=lm1x1+lm2x2+...+lmpxp
数据规模非常大,计算机内存不够;
其次时,不打算将所有数据都拿出来进行训练
主要内容:将数据集按比例缩放到一个具体区间
原因:
定义: v ′ = v − m i n A m a x A − m i n A ( n e w _ m a x A − n e w _ m i n A ) + n e w _ m i n A v 即为需要规范的数据 定义:\\ v'=\frac{v-min_A}{max_A-min_A}(new\_max_A-new\_min_A)+new\_min_A\\ v即为需要规范的数据 定义:v′=maxA−minAv−minA(new_maxA−new_minA)+new_minAv即为需要规范的数据
n e w _ m a x A 和 n e w _ m i n A new\_max_A 和new\_min_A new_maxA和new_minA的值主要看你要做怎样的规范化,如果是进行归一化(即将数据处理到0到1这个区间),则新的最大值是1,新的最小值是0
定义: v ′ = v − 均值 A 标准差 A v 即为原本需要规范的数据 定义: v'=\frac{v-均值A}{标准差A}\\ v即为原本需要规范的数据 定义:v′=标准差Av−均值Av即为原本需要规范的数据
如果数据集是流式数据(即随时都会有新的数据加入),而且我们假设流式数据的分布是不变的
则我们通过采样一部分流式数据,计算其均值和标准差
面对这样的情况,用Z-score方法规范化更合理
v ′ = v 1 0 j j 是使得 M a x ( ∣ v ′ ∣ ) < 1 的最小整数 v'=\frac{v}{10^j}\\ j是使得Max(|v'|)<1的最小整数 v′=10jvj是使得Max(∣v′∣)<1的最小整数
例如数据中最小值为12000,最大值为98000,则j=5
将数值数据离散化
eg:年龄化成——老中青幼