0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Python脚本的R语言的函数

454398 来源:机器之心 作者: THU数据派 2020-10-12 09:33 次阅读

本文介绍了采用创建一个Python脚本,用该脚本模仿R风格的函数的方法来方便地进行统计。

是用R语言还是用Python语言?这是一个旷日持久的争论。在此,我们可以尝试采用折中路线:创建一个Python脚本,用该脚本模仿R风格的函数,来方便地进行统计!

简介
用R语言还是用Python语言?这是数据科学和机器学习的一场大的争论。毫无疑问,这两种语言在最近几年都取得了巨大的进展,成为数据科学、预测分析和机器学习的首选编程语言。事实上,在IEEE新近的一篇文章中,Python取代C++成为2018年的顶级编程语言,R已经牢牢地保住了它在前10名中的位置。

然而,这两种编程语言之间存在着一些本质的差异。R主要是为数据分析问题的统计分析和快速原型化而开发的工具。另一方面,Python作为一种通用的现代面向对象语言,与C或Java相似,它具有更简单的学习曲线和更为灵活的行为方式。因此,R在统计学家、定量生物学家、物理学家和经济学家中仍然非常受欢迎,而Python逐渐成为日常脚本、自动化、后端web开发、分析和通用机器学习框架的首选语言,Python语言的技术支持基础比较广泛,同时还有许多开源社区。

如何在Python环境中模仿函数式编程?
R语言的函数编程特性为用户提供了非常简单有效地界面,用于快速计算概率,并为数据分析问题提供必要的描述性/推理统计。例如,仅仅使用一个紧致函数调用就能回答下面的问题,这是不是很神奇?

  • 如何计算数据向量的平均/中值/模型?
  • 如何计算服从正态分布的某一事件的累积概率?如果该分布是泊松分布,则如何计算?
  • 如何计算一系列数据点的四分位数间距?
  • 如何根据学生的t分布生成少量随机数?

在R语言编程环境中,这些您都能实现。

另一方面,Python脚本编写能使分析人员在各种分析管线中创造性地使用这些统计数据。

为了结合这两种语言的优势,需要设计一个简单的基于Python的包装类库,它包含最常用的函数,这些函数涉及以R风格定义的概率分布和描述性统计信息,用户可以快速地调用这些函数,而无需调用Python统计库,并弄明白所有方法和参数

最为便捷的R-函数的Python包装类脚本
我用Python编写了一个脚本,用来定义在简单统计分析中最为便捷和最被广泛使用的R函数。导入这个脚本之后,您将能够像在R编程环境中一样自然地使用那些R-函数。

这个脚本的目标是利用简单的Python子程序,来模仿R风格的统计函数,从而快速计算密度/点估计、累积分布、分位数,并为各种重要的概率分布生成随机变量。为了保持R的风格,没有使用类分层结构,只在该文件中定义了一些原始函数,这样用户便可以方便地导入这个Python脚本,并在需要时使用所有函数,而仅仅只需做一个名称的调用。

注意,在此使用了“模仿”这个词。我并没有声称要模仿R真正的功能编程范式:那些由深层次的环境设置和这些环境与对象之间组成的复杂的相互关系。这个脚本只允许我(同时也希望有无数其他Python用户)能够快速启动Python程序或Jupyter笔记本(一种交互式笔记本,支持运行 40 多种编程语言)导入脚本,并在短时间内开始进行简单的描述性统计。这就是目标,仅此而已。

或者,你可能已经会用R语言编码,刚开始学习和使用Python进行数据分析。你可以高兴地看到和使用Jupyter笔记本里的一些众所周知的函数,这些都和你使用的R语言环境中的方法类似。

简单实例
例如,如果需要计算数据点向量的TuKEY五数综合。你只需调用一个简单函数FiVunm并传递给向量,它便在一个Numpy数组中返回五数综合(最小值;第1四分位数(Q1);中位数(Q2);第3四分位数(Q3);最大值。)。
lst=[20,12,16,32,27,65,44,45,22,18]
fivenum(lst)
> array([12. , 18.5, 24.5, 41. , 65. ])

或者,你想知道以下问题的答案:
假设一台机器平均每小时输出10件成品,标准差为2,输出模式服从近似正态分布。在接下来的一小时内,机器输出至少7台但不超过12台的概率是多少?

答案基本上是这样,

利用pNorm…,只需要一行代码就可以得到答案。
pnorm(12,10,2)-pnorm(7,10,2)
> 0.7745375447996848

或者,对于如下问题:
假设你有一枚硬币,每次抛硬币的时候,都有60%的转动概率,玩的是10次抛掷的游戏。如何用这枚硬币计算出所有可能的赢球数(从0到10)?

只需使用一个dbinom…函数和几行代码就可以获得一个很好的条形图。
probs=[]
import matplotlib.pyplot as plt
for i in range(11):
probs.append(dbinom(i,10,0.6))
plt.bar(range(11),height=probs)
plt.grid(True)
plt.show()

目前已经实现的函数
目前,已经实现了的、可以用于快速调用的R风格函数在以下脚本中实现。

  • 均值、中值、方差、标准差
  • TuKEY五数综合、矩阵的IQR
  • 矩阵的协方差或两个向量之间的协方差
  • 密度、累积概率、分位函数和随机变量生成,用于下列分布:正态分布,均匀分布,二项分布,泊松分布,F分布,Student’s-t分布,卡方分布,Beta分布,和Gamma分布

后续工作
这项工作还正在进行之中,我计划在脚本中添加一些更为便捷的R-函数。例如,在R单行命令中,lm可以得到一个最小二乘拟合模型,该模型具有所有必要的推断统计量(P值、标准误差等)。这将是多么的简短和紧凑!另一方面,Python中的标准线性回归问题通常是使用Scikit-Learning来解决,需要用到更多的脚本来实现它。我计划使用Python的statsmodel后端结合这个单一函数线性模型来实现。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3864

    浏览量

    61304
  • python
    +关注

    关注

    51

    文章

    4670

    浏览量

    83457
  • r语言
    +关注

    关注

    1

    文章

    30

    浏览量

    6195
收藏 人收藏

    评论

    相关推荐

    通过Python脚本实现WIFI密码的自动猜解

    本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的自动猜解。
    的头像 发表于 01-25 10:46 675次阅读
    通过<b class='flag-5'>Python</b><b class='flag-5'>脚本</b>实现WIFI密码的自动猜解

    不属于python的内置函数

    Python是一种高级编程语言,它提供了许多内置函数,可以帮助开发人员更轻松地处理各种任务。但是,在Python中并非所有的函数都是内置
    的头像 发表于 11-29 14:27 526次阅读

    【ELF 1开发板试用】+ python脚本编程

    python脚本来进行使用。 其使用方法是: 1)vi编辑器编写一个脚本文件,其内容如图5所示。 图5 编写脚本文件 2)为执行脚本文件,执
    发表于 11-28 10:24

    脚本语言和编程语言的区别

    脚本语言和编程语言是计算机语言的两个主要分类。尽管两者都是用于编写计算机程序的工具,但它们在设计和运行方式上存在一些显著的区别。下面将详细探讨脚本语言和编程
    的头像 发表于 11-22 14:33 1341次阅读

    Python编程语言属于什么语言

    Python编程语言属于高级编程语言中的一种。它是一种通用、面向对象、解释型编程语言Python由Guido van Rossum于198
    的头像 发表于 11-22 14:31 634次阅读

    python调用math函数的方法

    Python编程中,数学函数是非常重要的工具,我们可以使用它们进行各种数值计算、几何运算和统计分析等操作。Python的标准库中内置了很多数学函数,而其中最基本和常用的数学
    的头像 发表于 11-22 11:01 1199次阅读

    python函数返回多个参数

    函数是程序设计中的一个重要概念,在很多编程语言中都存在。函数可以接受输入数据,并且根据输入数据进行一系列操作,最后可以返回一个或多个结果。Python是一种非常流行的编程
    的头像 发表于 11-21 16:37 475次阅读

    python如何定义一个函数

    一、Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道
    的头像 发表于 11-14 11:26 418次阅读

    BASH shell脚本篇—函数

    函数是代码重用的最重要方式。Bash函数可以定义为一组命令,在bash脚本中多次调用。
    的头像 发表于 10-20 16:31 348次阅读

    一文详解python调用函数

    函数被定义后,本身是不会自动执行的,只有在被调用后,函数才会被执行,得到相应的结果。但是在 Python 中我们要注意一个关键点,就是Python不允许前向引用,即在
    发表于 10-01 10:45 230次阅读

    为什么Python没有main函数

    今天的文章中,我们来讨论一下为什么有的编程语言有main函数,而Python为什么没有main函数
    发表于 08-17 11:47 169次阅读

    MATLAB函数脚本文件的详细解释

    MATLAB中的函数脚本文件是用来组织和执行代码的两种不同方式。下面是对MATLAB函数脚本文件的详细解释。
    发表于 07-05 12:24 3136次阅读

    一文带你了解Python的使用

    各位ICer对面向对象的语言Python想必并不陌生,作为继Perl之后最知名,且一直持续保持着版本 更新的脚本语言
    的头像 发表于 05-23 17:16 702次阅读
    一文带你了解<b class='flag-5'>Python</b>的使用

    如何在Linux命令行中运行Python脚本

    Python 是一种高级编程语言,被广泛应用于数据科学、机器学习、Web 开发等领域。在 Linux 操作系统中,Python 是一个默认安装的解释器,用户可以通过命令行界面(CLI)来运行
    的头像 发表于 05-12 14:49 1359次阅读

    一文带你了解Python的使用

    各位ICer对面向对象的语言Python想必并不陌生,作为继Perl之后最知名,且一直持续保持着版本 更新的脚本语言Python已经更新到了3.62版本
    的头像 发表于 05-04 09:58 568次阅读
    一文带你了解<b class='flag-5'>Python</b>的使用