
菜菜的scikit-learn课堂03
sklearn中的数据预处理和特征工程
小伙伴们晚上好~o(
 ̄▽ ̄
)ブ
我是菜菜,这里是我的sklearn课堂第三期,今晚的直播内容是数据预处理和特征工程~
我的开发环境是Jupyter lab,所用的库和版本大家参考:
Python 3.7.1(你的版本至少要3.4以上
Scikit-learn 0.20.0 (你的版本至少要0.19
Numpy 1.15.3, Pandas 0.23.4, Matplotlib 3.0.1, SciPy 1.1.0
请扫码进群领取课件和代码源文件,扫描二维码后回复”K"就可以进群哦~
Tsai Tsai
菜菜的sklearn课堂直播间: https://live.bilibili.com/12582510
sklearn专题第三期:数据预处理和特征工程

菜菜的scikit-learn课堂03
sklearn中的数据预处理和特征工程
1 概述
1.1 数据预处理与特征工程
1.2 sklearn中的数据预处理和特征工程
2 数据预处理 Preprocessing & Impute
2.1 数据无量纲化
2.2 缺失值
2.3 处理分类型特征:编码与哑变量
2.4 处理连续型特征:二值化与分段
3 特征选择 feature_selection
3.1 Filter过滤法
3.1.1 方差过滤
3.1.1.1 VarianceThreshold
3.1.1.2 方差过滤对模型的影响
3.1.1.3 选取超参数threshold
3.1.2 相关性过滤
3.1.2.1 卡方过滤
3.1.2.2 选取超参数K
3.1.2.3 F检验
3.1.2.4 互信息法
3.1.3 过滤法总结
3.2 Embedded嵌入法
3.3 Wrapper包装法
3.4 特征选择总结
4 sklearn课程12周提纲
Tsai Tsai
菜菜的sklearn课堂直播间: https://live.bilibili.com/12582510
sklearn专题第三期:数据预处理和特征工程

1 概述
1.1 数据预处理与特征工程
想象一下未来美好的一天,你学完了菜菜的课程,成为一个精通各种算法和调参调库的数据挖掘工程师了。某一天
你从你的同事,一位药物研究人员那里,得到了一份病人临床表现的数据。药物研究人员用前四列数据预测一下最
后一数据,还说他要出差几天,可能没办法和你一起研究数据了,希望出差回来以后,可以有个初步分析结果。于
是你就看了看数据,看着很普通,预测连续型变量,好说,导随机森林回归器调出来,调参调呀调,MSE很小,跑
了个还不错的结果。
几天后,你同事出差回来了,准备要一起开会了,会上你碰见了和你同事在同一个项目里工作的统计学家。他问起
你的分析结果,你说你已经小有成效了,统计学家很吃惊,他说:“不错呀,这组数据问题太多,我都分析不出什
么来。”
你心里可能咯噔一下,忐忑地回答说:“我没听说数据有什么问题呀。”
统计学家:“第四列数据很坑爹,这个特征的取值范围是1~10,0是表示缺失值的。而且他们输入数据的时候出错,
很多10都被录入成0了,现在分不出来了。”
你:”......“
统计学家:”还有第二列和第三列数据基本是一样的,相关性太强了。“
你:”这个我发现了,不过这两个特征在预测中的重要性都不高,无论其他特征怎样出错,我这边结果里显示第一
列的特征是最重要的,所以也无所谓啦。“
统计学家:“啥?第一列不就是编号吗?”
你:“不是吧。”
统计学家:“哦我想起来了!第一列就是编号,不过那个编号是我们根据第五列排序之后编上去的!这个第一列和
第五列是由很强的联系,但是毫无意义啊!”
老血喷了一屏幕,数据挖掘工程师卒。
这个悲惨又可爱的故事来自《数据挖掘导论》,虽然这是故事里的状况十分极端,但我还是想把这段对话作为今天
这章的开头,博大家一笑(虽然可能听完就泪流满面了)。在过去两周,我们已经讲了两个算法:决策树和随机森
林,我们通过决策树带大家认识了sklearn,通过随机森林讲解了机器学习中调参的基本思想,现在可以说,只要
上过前面两堂课的,人人都会调随机森林和决策树的分类器了,而我呢,也只需要跟着各大机器学习书籍的步伐,
给大家一周一个算法带着讲解就是了。如果这样的话,结果可能就是,大家去工作了,遇到了一个不那么靠谱的同
事,给了你一组有坑的数据,最后你就一屏幕老血吐过去,牺牲在数据行业的前线了。
数据不给力,再高级的算法都没有用。
我们在课堂中给大家提供的数据,都是经过层层筛选,适用于课堂教学的——运行时间短,预测效果好,没有严重
缺失等等问题。尤其是sklearn中的数据,堪称完美。各大机器学习教材也是如此,都给大家提供处理好的数据,
这就导致,很多人在学了很多算法之后,到了现实应用之中,发现模型经常就调不动了,因为现实中的数据,离平
时上课使用的完美数据集,相差十万八千里。所以我决定,少讲一两个简单的算法,为大家专门拿一堂课来讲解建
Tsai Tsai
菜菜的sklearn课堂直播间: https://live.bilibili.com/12582510
sklearn专题第三期:数据预处理和特征工程

数据挖掘的五大流程:
1. 获取数据
2. 数据预处理
数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程
可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断。
也可能,数据的质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太
大或太小
数据预处理的目的:让数据适应模型,匹配模型的需求
3. 特征工程:
特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取
特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。
可能面对的问题有:特征之间有相关性,特征和标签无关,特征太多或太小,或者干脆就无法表现出应有的数
据现象或无法展示数据的真实面貌
特征工程的目的:1) 降低计算成本,2) 提升模型上限
4. 建模,测试模型并预测出结果
5. 上线,验证模型效果
模之前的流程,数据预处理和特征工程。这样大家即可以学到数据挖掘过程中很重要但是却经常被忽视的一些步
骤,也可以不受课堂的限制,如果自己有时间,可以尝试在真实数据上建模。
1.2 sklearn中的数据预处理和特征工程
sklearn中包含众多数据预处理和特征工程相关的模块,虽然刚接触sklearn时,大家都会为其中包含的各种算法的
广度深度所震惊,但其实sklearn六大板块中有两块都是关于数据预处理和特征工程的,两个板块互相交互,为建
模之前的全部工程打下基础。
模块preprocessing:几乎包含数据预处理的所有内容
模块Impute:填补缺失值专用
模块feature_selection:包含特征选择的各种方法的实践
Tsai Tsai
菜菜的sklearn课堂直播间: https://live.bilibili.com/12582510
sklearn专题第三期:数据预处理和特征工程

模块decomposition:包含降维算法
对于特征工程,来介绍O'Reilly Media出版社的新书:
Tsai Tsai
菜菜的sklearn课堂直播间: https://live.bilibili.com/12582510
sklearn专题第三期:数据预处理和特征工程