前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据预处理和挖掘究竟该怎么做?硅谷网红告诉你

数据预处理和挖掘究竟该怎么做?硅谷网红告诉你

作者头像
AI研习社
发布2018-03-19 17:13:57
6830
发布2018-03-19 17:13:57
举报
文章被收录于专栏:AI研习社AI研习社

Siraj Raval 作为深度学习领域的自媒体人在欧美可以说是无人不知、无人不晓。

凭借在 Youtube 上的指导视频,Siraj Raval 在全世界吸粉无数,堪称是机器学习界的网红。说他是全球范围内影响力最大的 ML 自媒体人,怕也无异议。

因此,AI 研习社联系到了 Siraj 本人,并获得授权将他最精华的 Youtube 视频进行字幕汉化,免费推送给大家。我们将不定期更新,敬请关注!

雷锋字幕组为大家最新译制了 Siraj 深度学习系列,从机器学习和神经网络架构类型到数据可视化、小样本学习等从基础到应用的技巧,争取带领希望掌握神经网络的神奇魔力和想成为深度学习工程师的大家伙早日入坑!哦不,走向巅峰!!

今天主要讲的内容是数据预处理(文末点击阅读原文可抵达 GitHub 获取代码)。

(建议在 Wi-Fi 环境下观看视频,土豪随意~)

为了方便流量不足的小伙伴们在路上看,我们特意整理出了图文版:

在这个充斥着怀疑和谎言的网络世界中,数据即真相。海量的原始数据正以惊人的速度增长,其中大部分都是非结构化的,但是通过运用分析我们可以发现其中重要的规律和线索以及隐藏在数字背后的含义。今天我们将学习如何预处理数据,这是重要也最容易忽视的步骤之一,关键点如下:

  • 预处理数据集有三步:清洗、转换和简化
  • 深度学习可以自己从数据集中找到相关特征
  • PCA是常用的降维方法之一,可以通过Scikit-learn中模块操作

数据预处理的三个核心步骤是:清洗,转换,简化。

例子中的第一个数据集与音乐相关,是通过一款名为“Tag A Tune”的小游戏搜集的(玩法请自行百度)。数据集里有25,000首歌以及正确的标签。我们想以此数据集作为一个训练样本来建立一个可以区分歌曲所属标签种类的模型。

先导入Pandas来分析这个数据,通过读取CSV函数来导入数据,它将在pandas中创建一个数据框。这个数据框很容易修改,我们将它命名为newdata。将head函数中参数设置为5,可以显示数据的头5条记录。每一行都被排了序,每首歌都有一个id,每个标签的值为0或者1,代表这首歌是否有这个标签。

通过info()函数来获取关于数据的更多信息,数据大小只有38MB。每个标签都有一个简单的二元取值,幸运的是每个字段也没有空值,可以直奔第二步:数据转换。

很多标签听上去很类似,例如女歌手,女声,可以将它们统一归为一个特征"女“。我们可以为数据中的同义词创建一个二维列表,然后将它们合并到只剩第一列。对于列表中的每一组同义词,将每一特征的最大值保留下来。对于数据中的同义词,可以有效地把一组同义词合并为一列,然后删掉其他类似的词,这样可以得到更规范的特征。在数据简化过程中,我们可以删除那些不需要的信息。接下来我们可以准备模型用到的训练集和测试集。

有一点需要注意,在整个过程中我们并没有考虑哪些特征要用,哪些不用。在没有深度学习的时候,我们需要先选择合适的特征来喂一个模型。但是深度学习不需要我们再自行筛选特征了,它会根据我们放入模型的数据集,决定哪些与问题相关。在深度学习中,常说架构工程是新的特征工程。

第二个例子中的数据集是关于网络连接,网络连接要么正常,要么异常。异常连接是由于有入侵导致。我们想通过一系列特征判定网络连接正常或异常。当我们检查该数据的时候,数据中没有空值,也没有异常值。因此,可以直接跳过清理数据一步,直接进行数据转换。

数据集中数值型变量的范围差异较大,需要先将这些变量进行标准化,可以直接用Scikit-learn里面的Standard Scaler模块对数据进行标准化。标准化完毕后,接下来对数据进行简化。数据中包含很多字段,其中有相当一部分还是高度相关的。我们可以通过“降维”的方法将特征的总数减少,这样也有利于将数据在2D或3D的空间中展示,但这并不保证模型的结果将更精准,只是让我们的数据更容易理解。

一种降维的方法是PCA(Principal Component Analysis)。数据有诸多特征,缩减它们只需要三步:首先是将数据标准化,然后计算相关系数矩阵,算出特征值和特征向量后进行主成分排名。例如我们有四个特征,想通过PCA的方法将其减少至两个,一共5个步骤:

  1. 将数据标准化
  2. 计算协方差矩阵
  3. 特征分解(Eigen decomposition)
  4. 构成新投影矩阵(Projection Matrix)
  5. 通过这个矩阵来对原来数据进行转换

许多入门教程在导入数据时只教如何导入预处理过的数据,例如手写体数字或者电影评分数据,用一行代码就能搞定,但实际操作没那么简单。遇到实际问题,都需要先找到正确的数据集,最终预测的结论依赖于最初导入的数据。所谓:种瓜得瓜,种豆得豆。

完整代码和数据集请参考 Github 链接(点击文末阅读原文进入)。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档