R语言和 Python —— 一个错误的分裂

最近有一些文章提出与年龄相关的问题:“崭露头角的年轻数据科学家们是学习R语言还是Python更好?"

答案似乎都是“视情况而定”,在现实中没有必要在R和Python中做出选择,因为你两个都用得到。

它被称为RPy2:http://rpy.sourceforge.net/rpy2/doc-2.1/html/introduction.html

什么是"数据科学"?

在谈论RPy2之前,先来说一下“数据科学”,我要说的是“数据科学”是一个奇怪的词。因为几乎所有的科学都是“数据科学”。“无数据科学”则是完全不同的领域:哲学。“数据科学”是一门通过系统观察,对照实验,贝叶斯推理的开放试验理念的科学学科。

数据科学”的目标是从数据中得出有效的统计推论。标签“数据”是指数据用于做什么并不重要,但这是错误的:它是难以且不可能做到科学的在没有得到数据的详细信息,得去了解系统的弱点并生产出来,智能、灵敏的应对非理想好数据。

任何有趣的数据集至少有以下一些特性:缺失值,异常值和噪声。缺失值:顾名思义就是缺失的值。异常值:离群怪异的事件,由于某种原因或其他的事件其 值远远的超出合理界限。噪声的是,从所测量的值的随机(或非随机的)影响的着结果的分布。一个良好的测量分布,异常值和噪声在噪声不同下一般有较容易理解 的因素,而异常值通常是很少发生的,我们不能通过分布很好的理解。

对于处理这类事情R,Python和RPY的都是有用的工具。

为什么R非常适合数据科学

R语言对有经验的统计分析师来说是非常轻量级. 它由科学家创造,对绝大多数的数据管理任务来说都非常轻松。特别适合以下几种数据管理任务:

标记数据

填充遗漏值(译者注:比如10行数据每行固定9列,但是第三行却只有5列数据,可以通过R的函数自动补全另外的5列值)

过滤

R语言对标记数据的支持非常友好. R语言的“data frame”概念,使得通过对数据列和数据行头来分割组合数据、标记数据,然后以纯数值的矩阵数据交给算法处理. 而传统的数据科学开发语言,如Python对数据的处理都需要开发者自己完成,需要消耗开发者大量时间且容易出错.

处理或丢弃遗漏值、离群值(译者注:极值,如最大值、最小值)在数据中是非常基本但重要的任务. 某些情况下,本来是有利的数据,却因为测量误差等原因变成了不利、反对的数据。(译者注:比如越趋近于1才表示越可能是.)你如何处理这些事情可以对你的分析结果产生很大的影响。

R语言提供了丰富的算法来处理长期以来科学实践中出现的各种数据有关问题,虽然这些算法仍然需要自己去尝试和判断选择,以选择最恰当的数据处理算法.

RPy2: 架起R语言与Python之间的桥梁

Pandas,Python的数据分析库,目前它已经有很多相同功能,但是RPy2创造了一条很好的从R语言到Python的迁移路线,它让你在学习Python的时候,把R语言作为一个附属部分来学习,对于很多有丰富实验开发经验的分析师会使用R语言,当他们想把算法融入一个Python应用程 序,并分发给用户时,他们也可以使用RPy2。

执行这种迁移的能力,而不离开R语言的概念模型是很有价值的,但从另一个角度来说,这也是一个限制,能够使用一个真正的通用编程语言,如:Python,来包装概念模型,并使得这个用户友好的应用程序有多种复杂的附加功能(打印,网络,USB支持,等等)是至关重要的。

举例来说,我已经使用了这种方法来创建读取传感器数据的Python应用,通过RPy2处理,以各种方式显示给客户,我不知道怎么用R语言读取传感器数据,应该是有某种方法的。而Python已经做好了我需要的模块,即使没有也非常容易扩展。

如果你还不知道R语言,我推荐你学习Python并且使用RPy2来访问R语言的函数。你学习一种语言获得了两种能力。一旦你学习过RPy,再转到纯R语言也不是什么大问题,但是,你想要反过来就没那么容易了。

本文作者:佚名

来源:51CTO

时间: 2024-09-21 17:48:11

R语言和 Python —— 一个错误的分裂的相关文章

r语言-R语言和MySQL还有Hadoop的教学课程哪里找

问题描述 R语言和MySQL还有Hadoop的教学课程哪里找 R语言和MySQL还有Hadoop的教学课程哪里找 还请高手指点 解决方案 test 1,没人回答 解决方案二: R语言,翻pdf学吧, MySQL,是关系型数据库,可以找其他的关系型数据学习,比如oracle,通用,注意oracle多了一点内容 Hadoop,这个没办法,问谷歌和度娘 解决方案三: R和mysql这两个可以找本PDF来看,hadoop其实这东西也是有书的

python中使用rpy2调用R出现DLL加载错误,不是有效win32位程序

问题描述 python中使用rpy2调用R出现DLL加载错误,不是有效win32位程序 win7 64位系统 R和python都是32位 解决方案 这个dll的依赖是否有问题 用depends查看一下 解决方案二:

Javascript编程语言和DOM接口系列教程(1)

Hello,今天开始彬Go将以系列教程的方式为大家讲解Javascript编程语言和DOM接口,本篇教程为该系列的第一部分. 虽然现在一些js框架诸如jQuery.Prototype和MooTools能提高我们的前端开发效率而且很好的解决了浏览器兼容性问题,但我们仍要打好javascript技术基础.Javascript DOM 控制系列教程将告诉你你需要了解的javascript和文档对象模型(DOM)的本质. 引言 JavaScript JavsScript是可以在各种不同环境下使用的动态的

C语言和Fortran语言的差异

本文详细介绍C语言和Fortran语言的差异 1. C++语言和Fortran语言的发展背景 在程序设计语言的发展过程中,FORTRAN 语言被认为是科学计算的专用语言.后来推出的FORTRAN90 和FORTRAN 95 版本也不例外,它们虽然可以完全实现C++语言同样的功能,然而其软件开发环境和软件的集成性等方面都远不如C++ 语言.近年来,随着计算机软硬件技术的发展,数据结构.数据库管理技术.可视化与计算机图形学.用户接口系统集成以及人工智能等领域的成果被逐渐应用到结构分析软件中,结构分析

JavaScript Sort 的一个错误用法示例

 这篇文章主要介绍了JavaScript Sort 的一个错误用法示例,本文分析了一个Sort实例得到了这个错误用法并给出了解决方法,需要的朋友可以参考下     前不久同事的代码中出了一个很神奇的问题,大致流程是对一个由对象组成的数组进行排序,其中属性 a 用于排序,属性 b 作为一个优选条件,当 b 等于 1 的时候无论 a 值是什么,都排在开头 .这本是一个很简单的问题,问题就在于他用两次 sort 实现在这次排序,先根据 a 的属性排序,然后再根据 b 的值来排序.问题就出在第二次排序中

用 Swift 语言和 SpriteKit 创建有人工智能的井字游戏

本文讲的是用 Swift 语言和 SpriteKit 创建有人工智能的井字游戏, 我对(自我)学习有着很强的热情并且非常着迷.最近,我提出了一个利用制作游戏的理论应用到应用程序开发中来提高用户体验的假说.很多人提出"游戏化"这类的流行词,通过应用程序与用户之间的交互,以及让用户主动参与的方式去取悦用户,达到解决应用程序的痛点的难题.无论你的应用程序到底提供了什么内容.我们今天不会讨论这个(我甚至都不会提起增加游戏感行为的倡导者们是否玩游戏这样的问题.) 取而代之,我们会使用 Sprit

排序-关于文件指针的一个错误

问题描述 关于文件指针的一个错误 /************************************************************************************/ /* 著作権所有者 : / /* 文件名 :电子地图管理系统 */ /* 内容 : 对一个二进制地图文件进行处理,排序,检索,更新 */ /* 日期:2015-7-31 */ /* */ /* */ /*********************************************

调试-在测试一个tesseract程序时logcat抛出一个错误无法解决,请教各位大侠

问题描述 在测试一个tesseract程序时logcat抛出一个错误无法解决,请教各位大侠 这是logcat的信息 02-09 12:45:12.405: D/MainActivity ...(2210): begin>>>>>>> 02-09 12:45:12.409: D/nimei(2210): ---in ocr() before try-- 02-09 12:45:12.409: V/MainActivity ...(2210): not in the

c++-易学C++上的一段代码 怎么输入总是有一个错误

问题描述 易学C++上的一段代码 怎么输入总是有一个错误 #include"iostream.h" int main() { float r; float 1; const float pi=3.1415926F; cout<<"3"; cin>>r; 1=2*pi*r; cout<<"18.8496"<<1<<endl; return 0; } 解决方案 字母"l"