ML:数据预处理知识图谱

pandas 强大的数据处理工具
学习目标:无需记忆确切的api名称,需要知识pandas能做什么,并根据实际需要使用的功能可以快速索引查询。

速查手册:
(1) pandas中文给出的教学文档
https://www.pypandas.cn/docs/getting_started/10min.html
(2) pandas常用中文api文档
说明:给出了常用的数据process的api集合
https://blog.csdn.net/weixin_44129250/article/details/86653324
重点:针对每个api接口给出相应练习示例。
重要常用api好文总结
*groupby*
https://www.cnblogs.com/bjwu/p/8970818.html


数据清洗和数据预处理是数据科学家的本质工作。
作为MLer,
我们需要知道一些常见的数据处理场景以及会使用一些常见的方法。

首先我们应该对数据预处理有一个概括性的认知和常见场景的记忆,即知道为什么要有数据处理和数据处理的重要性。
推荐阅读如下:
https://zhuanlan.zhihu.com/p/51131210
https://zhuanlan.zhihu.com/p/57332604

关注如下特殊场景:
数据清理
(1)存在缺失值
处理原则:
由于现实世界中,获取信息和数据的过程中,会存在各类的原因导致数据丢失和空缺。针对这些缺失值的处理方法,主要是基于变量的分布特性和变量的重要性(信 息量和预测能力)采用不同的方法。
常见处理方法:
先用pandas.isnull.sum()检测出变量的缺失比例,考虑删除或者填充,若需要填充的变量是连续型,一般采用均值法和随机差值进行填充,若变量是离散型,通常采用中位数或哑变量进行填充。
scikit-learn 预处理模型中的 inputer 类
(2)存在离散点
总结来看,在数据处理阶段将离群点作为影响数据质量的异常点考虑,而不是作为通常所说的异常检测目标点,因而楼主一般采用较为简单直观的方法,结合箱线图 和MAD的统计方法判断变量的离群点。

数据规约
数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近地保持原数据的完整性。 这样,在归约后的数据集上挖掘将更有效,并产生相同(或几乎相同)的 分析结果。一般有如下策略:

*维度规约*
用于数据分析的数据可能包含数以百计的属性,其中大部分属性与挖掘任务不相关,是冗余的。维度归约通过删除不相关的属性,来减少数据量,并保证信息的损失最 小。

*维度变换*

维度变换是将现有数据降低到更小的维度,尽量保证数据信息的完整性。楼主将介绍常用的几种有损失的维度变换方法,将大大地提高实践中建模的效率
(1)主成分分析(PCA)和因子分析(FA):PCA通过空间映射的方式,将当前维度映射到更低的维度,使得每个变量在新空间的方差最大。FA则是找到当前特征向量的公因子(维度更小),用公因子的线性组合来描述当前的特征向量。
(2)奇异值分解(SVD):SVD的降维可解释性较低,且计算量比PCA大,一般用在稀疏矩阵上降维,例如图片压缩,推荐系统。
(3)聚类:将某一类具有相似性的特征聚到单个变量,从而大大降低维度。
(4)线性组合:将多个变量做线性回归,根据每个变量的表决系数,赋予变量权重,可将该类变量根据权重组合成一个变量。
(5)流行学习:流行学习中一些复杂的非线性方法,可参考skearn:LLE Example

数据变换
数据变换包括对数据进行规范化,离散化,稀疏化处理,达到适用于挖掘的目的。
(1)数据规范化
特别是基于距离的挖掘方法,聚类,KNN,SVM一定要做规范化处理。
sklearn提供了方便好用的数据规范化api
min-max scaler 数据归一化
scale
StandardScaler
normalizer

详解:
(1)归一化(min-max scaler)和标准化(z-scores normalization)的区别
https://www.cnblogs.com/bjwu/p/8977141.html
(2)Should I normalize/standardize/rescale the data?
该文给出了normalize,standardize,rescale的一般性定义。
http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

一般性经验:
1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,StandardScaler表现更好。
2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用MinMaxScaler。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范 围。
原因是使用MinMaxScaler,其协方差产生了倍数值的缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时,由于量纲的存在,使用不 同的量纲、距离的计算结果会不同。
而在StandardScaler中,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离的时 候,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。

(2)连续型(continuous)数据离散化
离散化处理:数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因主要有以 下几点:
模型需要:比如决策树、朴素贝叶斯等算法,都是基于离散型的数据展开的。如果要使用该类算法,必须将离散型的数据进行。有效的离散化能减小算法的时间和空 间开销,提高系统对样本的分类聚类能力和抗噪声能力。
离散化的特征相对于连续型特征更易理解。
可以有效的克服数据中隐藏的缺陷,使模型结果更加稳定。
等频法(percentile):使得每个箱中的样本数量相等,例如总样本n=100,分成k=5个箱,则分箱原则是保证落入每个箱的样本量=20。
等宽法:使得属性的箱宽度相等,例如年龄变量(0-100之间),可分成 [0,20],[20,40],[40,60],[60,80],[80,100]五个等宽的箱。
聚类法:根据聚类出来的簇,每个簇中的数据为一个箱,簇的数量模型给定。

(3)数据为多类别属性(categorical)数据--nomial定类数据,ordinal定序数据

nomial定类数据:纯类别概念,数据无大小概念之分,数据权重相等。

常用方法:one-hot编码和dummy编码(哑编码)
两种编码方式的区别视具体场景而定,无所谓谁坏睡好。
1. up主--王赟 Maigo的回答言简意赅,需要深入理解。
https://www.zhihu.com/question/48674426/answer/112633127

2. csdn博主详细讲述两者区别
https://www.cnblogs.com/wqbin/p/10234636.html

ordinal定序数据:类别有一定的大小比较含义,如数据对:大小,高低,胖瘦等
你可能希望使用 sklearn.preprocessing 所提供的 LabelEncoder 类。

1. csdn博主该篇博文较为详细的说明了one hot和labelencoder的区别,其中在基于度量距离的算法中(kNN,SVM等),one hot等保持距离空间的不变性,
但是one hot增加了空间维护,所以一般有one hot + PCA。
https://www.cnblogs.com/king-lps/p/7846414.html

Q&A:
1. 机器学习中如何处理不平衡数据?
https://zhuanlan.zhihu.com/p/56960799


以下好文博主比较适合挖宝藏,可以加入书签后,在遇到难题时,可快速查找。
好文博主:
1. csdn up: shelley__huang
https://blog.csdn.net/qq_27009517/article/details/80476507

相关推荐