Python数据预处理:机器学习、人工智能通用技术(1)
Python数据预处理:机器学习、人工智能通用技术
白宁超 2018年12月24日17:28:26
摘要:大数据技术与我们日常生活越来越紧密,要做大数据,首要解决数据问题。原始数据存在大量不完整、不一致、有异常的数据,严重影响到数据建模的执行效率,甚至可能导致模型结果的偏差,因此要数据预处。数据预处理主要是将原始数据经过文本抽取、数据清理、数据集成、数据处理、数据变换、数据降维等处理后,不仅提高了数据质量,而且更好的提升算法模型性能。数据预处理在数据挖掘、自然语言处理、机器学习、深度学习算法中起着重要的作用。(本文原创,转载必须注明出处.)
1 什么是数据预处理
数据预处理简而言之就是将原始数据
装进一个预处理的黑匣子
之后,产生出高质量数据
用来适应相关技术或者算法模型。为了大家更明确的了解数据预处理,我们举个新闻分类的例子:
- 将原始的数据直接进行分类模型训练,分类器准确率和召回率都比较低。因为我们原始数据存在很多干扰项,比如
的
,是
等这些所谓停用词特征对分类起的作用不大,很难达到工程应用。 - 我们将原始数据放假预处理黑匣子后,会自动过滤掉干扰数据,并且还会按照规约的方法体现每个词特征的重要性,然后将词特征压缩变换在数值型矩阵中,再通过分类器就会取得不错的效果,可以进行工程应用。
总结:数据预处理前的数据存在不完整、偏态、噪声、特征比重、特征维度、缺失值、错误值等问题;数据预处理后的数据存在完整、正态、干净、特征比重合适、特征维度合理、无缺失值等优点。
数据预处理方法:
- 数据清理:通过填写缺失的值、光滑噪声数据、识别或删除离群点并解决不一致性来清理数据。主要目标:格式标准化,异常数据清除,错误纠正,重复数据的清除。
- 数据集成:将数据由多个数据源合并成一个一致的数据存储,如数据仓库。
- 数据变换:通过平滑聚集,数据概化,规范化等方式将数据转换成适用于的形式。如把数据压缩到0.0-1.0区间。
- 数据归约:往往数据量非常大,在少量数据上进行挖掘分析需要很长的时间,数据归约技术可以用来得到数据集的归约表示,它小得多,但仍然接近于保持原数据的完整性,并结果与归约前结果相同或几乎相同。可以通过如聚集、删除冗余特征或聚类来降低数据的规模。
2 为什么做这门课程
在初期学习阶段,大家精力着重于算法模型和调参上。实际情况是,有时候在算法改进上花费很多功夫,却不如在数据质量上的些许提高来的明显。另外,习惯于数据语料的拿来主义之后,当面对新的任务时候,却不知道如何下手?有的同学在处理英语时候游刃有余,面对中文数据预处理却不知所措。基于以上几个问题,结合作者工程经验,整理出了‘数据预处理’学习资料,本教程主要面对文本信息处理,在图片语音等数据语料处理上是有所区别的。
3 本课程能学到什么
- 文本批量抽取:涉及技术点包括pywin32插件安装使用、文档文本提取、PDF文本提取、文本抽取器的封装、方法参数的使用、遍历文件夹、编码问题、批量抽取文本信息。
- 数据清洗:包括yield生成器、高效读取文件、正则表达式的使用、清洗网页数据、清洗字符串、中文的繁简互相转换、缺失值的处理、噪声数据、异常数据清洗、批量清洗30万条新闻数据。
- 数据处理:包括结巴分词精讲、HanLP精讲、停用词的处理、NLTK的安装使用、高频词和低频词的处理、词性的选择、特征数据的提取、批量预处理30万条新闻数据。
- 数据向量化:包括词袋模型、词集模型、词向量的转化、缺失值和数据均衡、语料库技术、TFIDF、特征词比重、主成分分析、主题模型等、批量进行30万条数据向量化。
- 可视化技术:包括条形图、柱形图、散点图、饼图、热力图等,还有matplotlib、seabom、Axes3D综合使用进行三维可视化。
- XGBoost竞赛神器:包括监督学习、文本分类、XGBoost原理、XGBoost算法实现、XGBoost调参、算法性能评估、30万条文档生成词典、30万条文档转化TFIDF、30万条文档转化生成LSI、训练分类器模型、抽样改进模型算法、特征维度改进模型算法、XGBoost实现30万条新闻数据文本分类
综上所述:数据预处理整体包括数据抽取-->数据清洗-->数据处理-->数据向量化-->可视化分析-->模型构建。在整个过程中,我们每个章节相关性很强,首先对整个章节最终实现效果进行演示,然后拆分知识点分别讲解,最后将所有知识点整合起来做小节的实战。每个小节实战数据为下一个章节做铺垫,最后,一个综合实战分类案例串联所有知识点。
4 开发环境说明
- 开发语言: Python3.5.3
- 系统环境:window10操作系统
- 编程环境:Sublime
- 软件环境:Anaconda4.4.0
- 插件版本:均支持最新版本
sublime激活:打开Help >Enter LICENSE
----- BEGIN LICENSE ----- sgbteam Single User License EA7E-1153259 8891CBB9 F1513E4F 1A3405C1 A865D53F 115F202E 7B91AB2D 0D2A40ED 352B269B 76E84F0B CD69BFC7 59F2DFEF E267328F 215652A3 E88F9D8F 4C38E3BA 5B2DAAE4 969624E7 DC9CD4D5 717FB40C 1B9738CF 20B3C4F1 E917B5B3 87C38D9C ACCE7DD8 5F7EF854 86B9743C FADC04AA FB0DA5C0 F913BE58 42FEA319 F954EFDD AE881E0B ------ END LICENSE ------
解决Package Control报错:Package Control.sublime-settings]修改方法:Preferences > Package Settings > Package Control > Settings - User 添加:
"channels": [ "http://cst.stu.126.net/u/json/cms/channel_v3.json", //"https://packagecontrol.io/channel_v3.json", //"https://web.archive.org/web/20160103232808/https://packagecontrol.io/channel_v3.json", //"https://gist.githubusercontent.com/nick1m/660ed046a096dae0b0ab/raw/e6e9e23a0bb48b44537f61025fbc359f8d586eb4/channel_v3.json" ]
5 项目演示
5.1 原始数据
5.2 数据预览
5.3 数据清洗
5.4 生成词典
5.5 生成特征向量
5.6 生成LSI
5.7 XGBoost新闻数据文本分类
6 目录列表
☆ 理论介绍
★ 实战演练
第1章 课程介绍
- 1-1 为什么做这门课--☆
- 1-2 课程整体介绍与导学--☆☆
- 1-3 学习建议--☆☆
- 1-4 课程开发环境介绍--☆
- 1-5 文本分类项目演示--☆
- 1-6 源码获取说明--☆☆☆
- 1-7 总结与扩展--☆
第2章 Python数据预处理之抽取文本信息
- 2.1 数据类型与采集方法--☆☆☆
- 2.2 一堆杂乱无章的数据--☆
- 2.3 文本抽取问题(3种方法对比)--☆
- 2.4 Pywin32实现格式转换--☆☆
- 2.3 Word转换TXT算法--★
- 2.6 PDF转换TXT算法--★
- 2.7 文本抽取工具--★★
- 2.8 文本批量编码--★
- 2.9 遍历读取文件--★★★
- 2.10 实战案例1:遍历文件批量抽取新闻文本内容--★★★
- 2.11 总结与扩展--☆☆
第3章 Python数据预处理之清洗文本信息
- 3.1 准备30万条新闻数据--☆
- 3.2 yield生成器--★
- 3.3 高效读取文件--★★
- 3.4 数据缺失值--★★
- 3.5 脏数据与噪声数据--★★
- 3.6 正则清洗数据--★★
- 3.7 清洗HTML数据--★★
- 3.8 简繁字体转换--★★
- 3.9 实战案例2:30万条新闻文本数据清洗--★★★
- 3.10 总结与扩展--☆☆
第4章 Python数据预处理之文本处理
- 4.1 常见分词工具--☆
- 4.2 jieba分词(推荐)--★★★
- 4.3 HanLP分词(扩展)--★★
- 4.4 自定义去停词--★★
- 4.5 词频统计--★★
- 4.6 自定义去高低词频--★★
- 4.7 自定义规则提取特征词--★★
- 4.8 实战案例3:6万条新闻文本处理--★★★
- 4.9 总结与扩展--☆☆
第5章 Python数据预处理之文本特征向量化
- 5.1 解析数据文件--★★
- 5.2 词集模型--★★
- 5.3 词袋模型--★★
- 5.4 特征词转文本向量--★★★
- 5.5 不均衡数据归一化处理--★★
- 5.6 处理数据缺失值--★★
- 5.7 实战案例4:新闻文本特征向量化--★★★
- 5.8 总结与扩展--☆☆
第6章 Python数据预处理之gensim文本向量化
- 6.1 gensim介绍--☆☆
- 6.2 gensim构建语料词典--★
- 6.3 gensim统计词频特征--★★
- 6.4 gensim计算IF-IDF--★★
- 6.5 潜在语义索引--★★★★
- 6.6 生成主题模型--★★★★
- 6.7 生成随机映射--★★★★
- 6.8 分层狄利克雷过程--★★★★
- 6.9 实战案例6:gensim实现新闻文本特征向量化--★★★★
- 6.10 总结与扩展--☆☆☆
第7章 Python数据预处理之特征降维
- 7.1 什么是降维--☆☆
- 7.2 PCA 概述--☆☆☆
- 7.3 PCA 应用场景--☆☆
- 7.4 PCA 算法原理--★★★
- 7.5 PCA 算法实现--★★★
- 7.6 高维数据向低纬数据映射--★★
- 7.7 前N个主成分特征--★★
- 7.8 实战案例5:PCA技术实现新闻文本特征降维--★★★★
- 7.9 总结与扩展--☆☆
第8章 数据可视化分析
- 8.1 matplotlib介绍--☆
- 8.2 matplotlib绘制折线图--★★
- 8.3 matplotlib绘制散点图--★★
- 8.4 matplotlib绘制直方图--★★
- 8.5 matplotlib绘制气温图表--★★
- 8.6 matplotlib绘制三维图--★★★
- 8.7 总结与扩展--☆
第9章 XGBoost实现30万条新闻数据文本分类
- 9.1 有监督学习--☆☆☆
- 9.2 文本分类方法--☆☆☆
- 9.3 XGBoost 原理--★★★★
- 9.4 XGBoost 算法实现--★★★★
- 9.5 准确率与召回率--☆
- 9.6 F度量值--☆
- 9.7 30万条文档生成词典--★★★
- 9.8 30万条文档转化TFIDF--★★★
- 9.9 30万条文档转化生成LSI--★★★★
- 9.10 训练分类器模型--★★★★
- 9.11 测试分类器模型--★★
- 9.12 抽样改进模型算法--★★
- 9.13 特征维度改进模型算法--★★
- 9.14 训练集和测试集比率改进模型算法--★★
- 9.15 综合实战:XGBoost实现30万条新闻数据文本分类--★★★★★
- 9.11 总结与扩展--★★
7 源码获取
源码请进【机器学习和自然语言QQ群:436303759】文件下载:
作者:白宁超,工学硕士,现工作于四川省计算机研究院,研究方向是自然语言处理和机器学习。曾参与国家自然基金项目和四川省科技支撑计划等多个省级项目。著有《自然语言处理理论与实战》一书。 自然语言处理与机器学习技术交流群号:436303759 。
出处:http://www.cnblogs.com/baiboy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。