课堂 | 如何轻松有效地预处理数据

栏目: Python · 发布时间: 7年前

内容简介:作者:Siraj Raval课堂:Github Repo:

作者:Siraj Raval

课堂: The Best Way to Prepare a Dataset Easily

Github Repo: llSourcell.Prepare dataset challenge

本课堂的核心是讲述数据前夕的数据预处理过程,包括准备数据阶段和处理数据阶段。再具体以实例:通过大脑扫描公共数据集来分析、建模,预测某人是否在冥想。

准备数据

  • 准备数据阶段 :决定使用何种数据,这跟你试图解决的问题相关。
  • 关于数据来源 :能使用公共数据集解决的问题,尽量使用公共数据集。若公共数据集无法满足你的需求,引用毛主席的老话:没有条件便自己创造条件。即我们通过网络爬虫形式,把原始网页中的数据扒取下来,”创造” 数据集。

公共数据集

谷歌高级搜索

  • 官方网址Google 高级搜索
  • 使用方式 :我们侧重关注以下检索项,可获得意想不到的效果。
    • 关键字部分 :填写问题相关的关键词;
    • 网站或域名 :填写 .edu.gov.org 等,即为确保数据的权威可靠性,尽可能从教育、政府、组织机构中获取公共数据集;
    • 文件类型 :可指定为 csv ( 逗号分隔值 )、xls ( Microsoft Excel ) 等文件类型,Python 对 csv 、xls 提供了较好的库支持,为了更便捷进行数据处理,则优先选择此类型的文件格式。

Kaggle

  • 官方网址Kaggle
  • 推荐理由 :Kaggle 由 Anthony Goldbloom 创立,主要为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台 ( 已被谷歌收购 )。由此可见:

    • Kaggle 的每个竞赛都是独立的,无需设置项目范围然后收集数据,这让你有时间专注其它技能。
    • Kaggle 的每个数据集都有要解决的现实问题,要面向参与竞赛的人群,因此数据集的描述是不可缺少的。

      不妨体验下 Kaggle 社区提供的入门案例 泰坦尼克:灾难中的机器学习 ,其相关的数据集描述: Titanic: Machine Learning from Disaster

  • 入门指南 :参考文章 机器之心. Kaggle 如何入门. zhihu.com 整理而得。

    • 选择一种编程语言 :你是一个毫无经验的新手,推荐 Python ,因这是一种通用编程语言,你可以在整个流程中都使用它。

    • 学习探索数据的基础 :加载、浏览和绘制你的数据( 即探索性分析 )的能力,因为它可以为你将在模型训练过程中做的各种决策提供信息。

      若你选择了 Python 路线,推荐使用专门为这个目的设计的 Seaborn 库。其中有高层面的绘图函数,可以绘制许多最常见和有用的图表。可参考资料:

    • 训练你的第一个机器学习模型 :将数据集分成独立的训练集和测试集,交叉验证避免过拟合以及使用合适的表现评价指标。对于 Python,最好的通用机器学习库是 Scikit-Learn。可参考资料:

    • 解决入门级竞赛Getting Started 竞赛非常适合初学者,因为它们给你提供了低风险的学习环境,并且还有很多社区创造的教程。

      Kaggle 的竞赛分成四个类别:

      Featured :通常是由公司、组织甚至政府赞助的,奖金池最大。

      Research :研究方向的竞赛,只有很少或没有奖金。它们也有非传统的提交流程。

      Recruitment :这些是由想要招聘数据科学家的公司赞助的。目前仍然相对少见。

      Getting Started :这些竞赛的结构和 Featured 竞赛类似,但没有奖金。它们有更简单的数据集、大量教程和滚动的提交窗口让你可以随时输入。

网络爬虫

网站 API

  • 当公共数据集无法满足我们的需求时,则需要自定义采集数据。而采集数据则通过网络爬虫实现。值得注意的是,并不是所有的网页,都需要我们花费大功夫去扒取获得,而是它们提供了调用数据的 API。
  • 当然,也有 Github 大神搜集并整理了较实用的 API: TonnyL. Awesome APIs

网页爬虫

  • Beautiful Soup :Beautiful Soup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库。
  • Web Magic :Web Magic 是一个简单灵活的 Java 爬虫框架。基于 WebMagic,你可以快速开发出一个高效、易维护的爬虫。

处理数据

  • 为什么要对数据预处理:确保数据质量,以保证预测的结果更精确。而数据质量涉及许多因素,例如准确性、完整性、一致性、可信性和可解释性。
  • 数据预处理的主要任务:
    • 数据清洗:缺失值处理、光滑噪声数据、识别和删除离群点。
    • 数据归约:特征规约 ( 维归约 )、特征值归约 ( 概念分层 )。
    • 数据变换:方法可以是数据归约、也可以分解数据,主要思想是将数据变换或统一成适合数据挖掘的形式。

数据清洗

  • 缺失值处理 :某些实例数据中属性值为空,我们通过遍历数据集将其剔除。若数据集中存在大量实例含有缺失值的情况,则我们采用 填补缺失值 的方法。值得注意的是,根据不同情况,填补缺失值有多种方式:

    • 人工填写缺失值。
    • 使用全局常量填充缺失值:”unkown” 或者 $\infty$。
    • 使用属性的中心度量:若是对称的数据分布,则使用均值;若是倾斜的数据分布,则使用中位数。
    • 使用最可能的值填充缺失值:回归、贝叶斯形式化的基于推理的 工具 或决策树。

      某些情况下,缺失值并不意味数据有错误。例如在申请信用卡时,要求填写申请人的驾驶执照号,没有的人可填写 “无” 或者不填。

  • 光滑噪声 :指数据中存在着错误或异常 ( 偏离期望值 ) 的数据,这些数据对数据的分析造成了干扰。我们可通过 分箱回归离群点分析 等噪声光滑技术来消除噪声。

    分箱
    回归
    离群点分析
    

数据归约

  • 特征归约 :从原有的特征中删除不重要或不相关的特征,或者通过对特征进行重组来减少特征的个数。例如,某些实例数据中属性值与所研究的问题无关,我们可以选择性地剔除。

    例如本课堂的实例:预测志愿者是否在冥想。大脑扫描数据是由 EEG 采集而得的,其呈现三种特征:精神专注度、冷静度以及志愿者的年龄。而志愿者是否发生冥想活动,很明显与性别无关,则可选择性地剔除该属性。

  • 特征值归约 :特征值离散化技术,也称为 概念分层 。将连续型特征的值离散化,使之成为少量的区间,每个区间映射到一个离散符号。这种技术的好处在于简化了数据描述,并易于理解数据和最终的挖掘结果。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Art and Science of Java

The Art and Science of Java

Eric Roberts / Addison-Wesley / 2007-3-1 / USD 121.60

In The Art and Science of Java, Stanford professor and well-known leader in CS Education Eric Roberts emphasizes the student-friendly exposition that led to the success of The Art and Science of C. By......一起来看看 《The Art and Science of Java》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具