数据科学项目开篇(一)

 这篇文章重点是介绍,数据挖掘,机器学习项目做为一个完整的流程是怎么样的,意义是制定本身一个规范,因此里面的具体细节并无花太多的心思,效果很差在所不免。重点是体会这个过程!!!html

   这篇文章是这个系列的开篇立论,学了一年的机器学习方面的知识,可是当本身上手去作的时候,问题就来了,好像什么都知道一些,可是又什么都作不了,各类困难,实际工做中,没有人为你收集处理数据,而数据集质量的好坏,特征工程的质量,将决定最后模型的性能上限。数据科学,机器学习是一门实践的知识,而原理的东西彷佛永远都学不完。实际工做中,真正拉开差距的更可能是对客户需求,具体业务的理解,和工程的熟练度和深度。而这些东西是课本上学不到的,因此但愿在研二这一年,投入到实际的工程中去,作一些真正贴近实际的项目。python

  在项目中我会用到python中两个重要的库,咱们会使用 Pandas 和 scikit-learn ,tensorflow等库。咱们会大量用到 Pandas 的DataFrame,这使得在 Python 中读取和处理表格数据变得很是简单。这个系列,我会把重点放在:git

特征工程,github

业务理解,算法

不一样机器学习算法的适用场合,机器学习

相同场合下不一样算法的表现,性能

对结果多指标的评价上,因此在实现上咱们直接调用各类轮子来实现咱们的模型。学习

下面这段复制了 知乎上的一篇文章,这篇文章写的很好,介绍了一个完整的数据科学项目的严格流程,按照这个流程作事情,会让人的头绪清楚,建议你们直接看下面连接的原文。网站

第一步,咱们要寻找有价值的数据集。    ui

做者:EarlGrey
连接:https://zhuanlan.zhihu.com/p/22894651
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

 寻找优质数据集进行完整的项目分析很困难。数据集须要足够大,大到出现内存和性能的限制。还须要具有业务价值。举个例子,这个数据集中包含了美国大学的招生条件、毕业率和毕业生将来收入的数据。这就是一个能够用来说故事的优质数据集。然而,若是你仔细想一想,就会发现这里面没有足够的细节来创建一个完整的项目。

举例说,你能够告诉别人若是他们去某些(好)大学,他们将来的潜在收入就会更高,可是这只须要一个很快的查找比较就能够完成,没有足够的空间去展现你的技术能力。你也能够发现若是大学有更高的入学条件,它们的毕业生就更有可能得到高薪,但这些就更偏向于讲故事,而非业务价值了。

当你有 GB 以上的数据量时,或者当你想要预测一些数据细节,内存和性能限制就会逐渐凸现出来,由于得对数据集运行算法运算。

一个优质数据集容许你编写一系列脚本对数据作变形,从而回答一些动态问题。股票价格就是一个很好的数据集。你能够根据这些数据预测次日的股价走势,而且在闭市的时候把新数据提供给算法。这能够帮助你执行交易,甚至是获取利润。这就不是在讲故事了 — 而是直接产生价值。

下面是一些可以找到优质数据集的地方:

  • /r/datasets — 一个有着上百有趣的数据集的 subreddit
  • Google Public Datasets — 一些在 Google BigQuery 上的公共数据集
  • Awesome datasets — 一个托管在 Github 上的数据集清单
  • 。。。。。。。。有个新的数据集网站的时候会更新在这里。

浏览这些数据集时,想想若是有这些数据集,人们可能会问什么问题,而后再想一想这些问题是不是一次性的(“S&P 500 和房价的相关性是怎样的?”),或是持续性的(“你能预测股票价格吗?”)。这里的关键在于找到那些持续性的问题,这些问题须要屡次运行,并输入不一样的数据才能回答。

第二步,选择分析角度。

  重要的事是要坚持一个角度。一次专一于太多事情会很难作成一个优秀的项目。选择一个有足够细节的角度这点也很重要。

  

第三步,理解数据。

做者:EarlGrey
连接:https://zhuanlan.zhihu.com/p/22894651
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

咱们首先快速查看原始数据文件。下面是 2012 年第一季度收购数据的前几行:

100000853384|R|OTHER|4.625|280000|360|02/2012|04/2012|31|31|1|23|801|N|C|SF|1|I|CA|945||FRM|
100003735682|R|SUNTRUST MORTGAGE INC.|3.99|466000|360|01/2012|03/2012|80|80|2|30|794|N|P|SF|1|P|MD|208||FRM|788
100006367485|C|PHH MORTGAGE CORPORATION|4|229000|360|02/2012|04/2012|67|67|2|36|802|N|R|SF|1|P|CA|959||FRM|794

下面是 2012 年第一季度的表现数据的前几行:

100000853384|03/01/2012|OTHER|4.625||0|360|359|03/2042|41860|0|N||||||||||||||||
100000853384|04/01/2012||4.625||1|359|358|03/2042|41860|0|N||||||||||||||||
100000853384|05/01/2012||4.625||2|358|357|03/2042|41860|0|N||||||||||||||||

在编写代码以前,花点时间去理解数据是颇有用的。尤为对于业务型项目而言,由于咱们没有互动式地去探索数据,很难发现某些细节,除非一开始就找到它们。这种状况下,第一步就是去房利美的网站上读一读有关数据集的材料:

读完这些材料以后,咱们知道了一些有用的关键信息:

  • 从 2000 年到如今,每一个季度都有一个收购文件和表现文件。数据滞后一年,因此最近的数据是 2015 年的
  • 这些文件是文本形式,用 | 做为分隔符
  • 这些文件没有头文档,可是咱们有全部列名称的列表
  • 所有加起来,这些文件共包含 2.2 千万个房贷的数据
  • 由于表现文件涵盖了以前的房贷信息,因此早些时候的房贷会有更多的表现数据(举个例子,2014 年收购的房贷不会有太多表现信息)

在设计项目结构和处理数据时,这些信息能帮助咱们节省一大笔时间。

做者:EarlGrey
连接:https://zhuanlan.zhihu.com/p/22894651
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

第四步,设计项目结构

在开始下载和探索数据以前,设计好项目结构是很是重要的。在打造一个完整的项目时,咱们的主要目标是:

  • 输出一个可行的解决方案
  • 解决方案运行快且消耗最少资源
  • 让他人能够很容易地扩展项目
  • 让他人能够容易地理解代码
  • 写的代码越少越好

为了达到这些目标,咱们要设计好项目的结构。一个结构良好的项目听从如下规范:

  • 数据文件和源代码分开
  • 原始数据和生成数据分开
  • 有一个 README.md 文件,介绍如何安装并使用这个项目
  • 有一个 requirements.txt 文件,包含项目所需的全部模块
  • 有一个 settings.py 文件,包含全部其余文件所需的设置
    • 例如,若是有不少Python脚本都读取同一个文件,就不如让它们都导入settings并从这一个地方来获得文件
  • 有一个 .gitignore 文件,来防止一些特别大的或者私密的文件被提交到 Git
  • 把任务分红几步,并分别放在能够单独执行的文件里
    • 例如, 用一个文件读取数据,一个文件创建特征,一个文件执行预测
  • 储存中间值。例如,一个脚本可能会输出一个文件,这个文件又会被另一个脚本读取
    • 这使得咱们能够在数据处理的流程中作一些改动,而又不须要从新计算

该项目的文件结构以下:

loan-prediction
├── data
├── processed
├── .gitignore
├── README.md
├── requirements.txt
├── settings.py
 
相关文章
相关标签/搜索