概述

和那些数据科学比赛不同,在真实的数据科学中,我们可能更多的时间不是在做算法的开发,而是对需求的定义和数据的治理。所以,如何更好的结合现实业务,让数据真正产生价值成了一个更有意义的话题。

数据科学项目的完整流程通常是这样的五步骤:

需求定义=》数据获取=》数据治理=》数据分析=》数据可视化

一、需求定义

需求定义是数据科学项目和数据科学比赛的最大不同之处,在真实情景下,我们往往对目标函数、自变量、约束条件都并不清晰。需要通过访谈、论文、文档等等形式对问题进行系统地分析,将实际问题量化为可以解决的抽象问题,确定自变量、约束条件以及目标函数。在真实情景下,需求往往是多变化的,临时的,如何把握好需求成为了整个项目后续推进的关键要素。

二、数据获取

数据获取的形式主要包括:

  1. 现有数据库的调用

  2. 现有API的调用

  3. 自行设计的爬虫

在数据获取中,比较重头的一项就是爬虫的开发,这里 R 虽然开发了 rvest 包, 不过比起 django-scrapy 这样完整的爬虫调度系统不禁黯然失色,所以在第一步,我建议使用Python做爬虫的开发。

三、数据治理

数据治理第一步就是数据的定义,而数据的定义通过 Python的各种ORM框架和admin系统,可以非常出色地完成数据仓库的定义和管理。通过 airflow 我们又可以很好的对ETL过程做全流程的监控。

所以,在第二步,我依然建议使用Python作为数据治理的工具。

四、数据分析

数据分析首先涉及的就是探索式分析,这一点正是R语言的强项,适宜于各种强大的数据可视化,我们可以利用R快速了解数据的整体特性,通过 data.table 和 Rcpp 我们也可以快速提升 R 的单机性能,省去了Cython写wrapper的尴尬。而Python 由于需要更多约束的分析操作,在探索式分析中相比 R 少了几分灵活性。至少是矩阵乘法我更愿意接受直观的 %*%, 而不是np.dot()。所以,第三步,我建议使用 R 完成数据的分析工作。

五、数据可视化

数据可视化本来是JS的天下,但是感谢 R语言生态中热衷于给JS做封装的开发者们,现在市面上绝大部分在BI领域会涉及到的JS库都已经被 R 语言封装好了,比如 echarts、highcharts、rcharts、d3等等。另一方面,通过 shiny, 我们快速极大地简化了BI构建的流程,跳过底层jquery、boostrap、websocket等等细节,直接针对业务场景构建BI系统,帮助我们在快速构建BI原型上扫清障碍,而不是在Tornado里面辛苦地改template。显然,使用 R 做数据可视化可以大大减少我们的开发时间。所以,第四部,我也建议使用 R 完成数据可视化的工作。

总结

这样正常数据科学项目做下来,我们需要交付一个爬虫管理系统(django-scrapy)、一个数据仓库管理系统(django)、一个流程监控系统(airflow)、一个BI分析系统(shiny),真正完成对整个数据科学项目的可监控、可维护,然后在这个过程中我们不断去迭代我们的数据产品,优化流程,完善模型,最终实现反哺业务。

总结起来,将Python作为数据科学的基础,而R作为上层建筑是一个不错的解决方案,当然这一切都建立在数据开发人员具有过硬的开发技能,否则Python和R的随意性会酿成巨大的惨案。

简谈-如何使用Python和R组合完成任务的更多相关文章

  1. MPI简谈

    MPI简谈 MPI是分布式内存系统,区别于OpenMP和Pthreads的共享内存系统.MPI是一种基于消息传递的并行编程技术,是如今最为广泛的并行程序开发方法. MPI前世今生 MPI(Messag ...

  2. Python、R对比分析

    一.Python与R功能对比分析 1.python与R相比速度要快.python可以直接处理上G的数据:R不行,R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析, ...

  3. (数据科学学习手札23)决策树分类原理详解&Python与R实现

    作为机器学习中可解释性非常好的一种算法,决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方 ...

  4. (转)利用Auto ARIMA构建高性能时间序列模型(附Python和R代码)

    转自:  原文标题:Build High Performance Time Series Models using Auto ARIMA in Python and R 作者:AISHWARYA SI ...

  5. Python调用R编程——rpy2

    在Python调用R,最常见的方式是使用rpy2模块. 简介 模块 The package is made of several sub-packages or modules: rpy2.rinte ...

  6. 机器学习算法的基本知识(使用Python和R代码)

    本篇文章是原文的译文,然后自己对其中做了一些修改和添加内容(随机森林和降维算法).文章简洁地介绍了机器学习的主要算法和一些伪代码,对于初学者有很大帮助,是一篇不错的总结文章,后期可以通过文中提到的算法 ...

  7. 简谈Java语言的继承

    Java语言的继承 这里简谈Java语言的三大特性之二——继承. Java语言的三大特性是循序渐进的.是有顺序性的,应该按照封装-->继承-->多态这样的顺序依次学习 继承的定义 百度百科 ...

  8. .NET简谈接口

    自从面向对象开发方式的出现,抽象的概念就开始日新月异的发展,面向对象编程.面向接口编程.面向组件编程等等:这一系列的概念都是软件工程所追求的思想范畴,高类聚低耦合. 今天我要简谈的是面向对象里面非常重 ...

  9. Python 和 R 数据分析/挖掘工具互查

    如果大家已经熟悉python和R的模块/包载入方式,那下面的表查找起来相对方便.python在下表中以模块.的方式引用,部分模块并非原生模块,请使用 pip install * 安装:同理,为了方便索 ...

随机推荐

  1. cocos2dx 魔塔项目总结(一)

    <魔塔天城>发布已经有半年的时间了,一直想找时间来总结一下这个项目,但总是一拖再拖.如果再这么拖下去,就永远都不会有时间来写这个总结了,时间总是挤出来的. 魔塔天城使用的cocos2dx ...

  2. 通讯录--(iOS9独有的方法)

    导入库文件   #import <ContactsUI/ContactsUI.h> #pragma mark iOS9 新出的点击通讯录的获取信息的办法 #pragma mark - 先弹 ...

  3. linux版powershell安装教程(.net core版)

    powershell 传教士 原创文章 始于2016-12-20,2017-03-15改.文章版本目前博客园为最新版. 允许转载,但必须保留名字和出处,否则追究法律责任 问:powershell二进制 ...

  4. App对接支付宝移动支付功能

    前段时间看了下app对接支付宝移动支付的功能,并自己总结了下支付宝移动支付的实现流程 一.申请流程          前提是已有现成的应用. 1.  申请地址            https://b ...

  5. [ZooKeeper.net] 3 ZooKeeper的分布式锁

    基于ZooKeeper的分布式锁 ZooKeeper 里实现分布式锁的基本逻辑: 1.zookeeper中创建一个根节点(Locks),用于后续各个客户端的锁操作. 2.想要获取锁的client都在L ...

  6. ECSHOP info: Can't Connect MySQL Server(localhost:3306)!

    今天对服务器压力测试后,某个公司电脑的页面显示标题所示,别人电脑正常.故让她清理cookie.无效.重启MySQL后问题解决.

  7. C++11右值引用和std::move语句实例解析

    关键字:C++11,右值引用,rvalue,std::move,VS 2015 OS:Windows 10 右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一.从实践 ...

  8. 张高兴的 UWP 开发笔记:定制 ContentDialog 样式

    我需要一个背景透明的 ContentDialog,像下图一样.如何定制?写了一个简单的示例(https://github.com/ZhangGaoxing/uwp-demo/tree/master/C ...

  9. iwebshop插件的操作

    <?php class Miao extends pluginBase { //插件名字 public static function name(){ return "秒杀" ...

  10. Java版权信息之Jautodoc

    Java项目开发中,常常需要在编码文件上面加上一些版权声明或者类注释,如果文件很多,手工去添加或者修改,会很麻烦.可以利用工具满足我们的要求.一.版权声明可以使用Jautodoc.将jautodoc的 ...