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

    文章

    4422

    浏览量

    67876
  • python
    +关注

    关注

    58

    文章

    4889

    浏览量

    90330
  • r语言
    +关注

    关注

    1

    文章

    30

    浏览量

    6698
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用PYTHON进行的跨平台仿真

    如何使用编程语言Python来调用和控制VirtualLab Fusion中的模拟。请查看下面链接的文档,以找到关于如何设置和使用Python和VirtualLab Fusion之间的接口的详细指南,以及一个
    发表于 04-02 08:21

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    Fusion的简单方法。在本示例中,我们将演示如何使用Python脚本运行光学仿真,以向用户简要概述这种跨平台的仿真能力。 用例概览 文件路径 用户可以在样本文件的文件夹中找到所有文件。包含这些文件
    发表于 03-31 09:39

    [VirtualLab] 使用Python进行跨平台参数扫描

    摘要 VirtualLab Fusion允许外部访问其建模技术、求解器和结果。这有助于应用其他数据处理或优化工具来进一步研究光学模拟。在本示例中,我们演示如何使用Python脚本运行参数扫描,以及
    发表于 03-31 09:36

    智能显示模块支持脚本语言吗?

    智能显示模块支持脚本语言吗?
    发表于 02-26 11:18

    如何用好 C 语言函数的返回值?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数。更好的做法是按照复用率高、耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数。 C语言代码的组合千变万化,因
    发表于 12-25 07:17

    官方新品 | 虹科PCAN-Explorer 7发布:带来Python脚本与灵活授权新体验

    虹科PCAN-Explorer7支持Python脚本+授权管理升级在CAN总线技术持续进化的当下,我们始终相信,工具的革新应与技术的前沿同频,更应让复杂的研发与分析工作,回归简洁、高效的本质。虹科
    的头像 发表于 12-05 11:03 1207次阅读
    官方新品 | 虹科PCAN-Explorer 7发布:带来<b class='flag-5'>Python</b><b class='flag-5'>脚本</b>与灵活授权新体验

    LUA例程-常用的回调函数使用说明

    详细说明LUA脚本函数功能和对应的应用实例。对于LUA脚本编程有很大的帮助和提高技能。
    发表于 11-24 16:43 0次下载

    Pico Technology发布Python软件包pyPicoSDK

    现有 PicoSDK 的基础上构建,使工程师、开发人员和业余爱好者能够创建 Python 脚本,更加快速方便地控制其 PicoScope 设备。
    的头像 发表于 09-29 15:03 1131次阅读

    termux调试python猜数字游戏

    支持的核心语言,安装简单且运行高效。 2. 创建脚本文件 ```bash nano guess_number.py# 使用Termux内置nano编辑器 ``` --- ? 二、游戏代码
    发表于 08-29 17:15

    Python脚本实现运维工作自动化案例

    还在为重复性运维工作而烦恼?每天被各种告警、监控、部署搞得焦头烂额?作为一名有10年经验的运维老司机,今天分享5个超实用的Python自动化脚本,让你的运维工作效率提升300%!这些都是我在生产环境中实际使用的案例,代码简洁高效,拿来即用!
    的头像 发表于 08-27 14:46 1390次阅读

    C语言中的内联函数与宏

    在C编程中,内联函数和宏都用于避免函数调用的开销并编写可复用的逻辑部分,但它们在工作方式和安全性方面存在显著差异。
    的头像 发表于 07-25 15:10 2105次阅读
    C<b class='flag-5'>语言</b>中的内联<b class='flag-5'>函数</b>与宏

    C++ 与 Python:树莓派上哪种语言更优?

    Python是树莓派上的首选编程语言,我们的大部分教程都使用它。然而,C++在物联网项目中同样广受欢迎且功能强大。那么,在树莓派项目中选择哪种语言更合适呢?Python因其简洁性、丰富
    的头像 发表于 07-24 15:32 1139次阅读
    C++ 与 <b class='flag-5'>Python</b>:树莓派上哪种<b class='flag-5'>语言</b>更优?

    大彩讲堂:VisualHMI-LUA教程-on_press回调函数使用指南

    一、适合范围本文档适用于VisualHMI平台,Lua脚本语言为V5.3版本,配合工程可以完成大部分的内部逻辑处理。二、概述on_press(state,x,y)触摸回调函数,当带触摸的串口屏,点击
    的头像 发表于 07-23 16:32 1457次阅读
    大彩讲堂:VisualHMI-LUA教程-on_press回调<b class='flag-5'>函数</b>使用指南

    大彩讲堂:VisualHMI-LUA教程-on_run回调函数使用指南

    一、适合范围本文档适用于VisualHMI平台,Lua脚本语言为V5.3版本,配合工程可以完成大部分的内部逻辑处理。二、概述on_run(screen)周期回调函数,用该回调函数,会根据设定的时间
    的头像 发表于 07-23 15:25 1305次阅读
    大彩讲堂:VisualHMI-LUA教程-on_run回调<b class='flag-5'>函数</b>使用指南

    深入理解C语言函数—编程中的“积木块”艺术

    在编程的世界里,函数就像建筑中的“积木块”——它们是构建复杂程序的基石。通过灵活组合这些模块,开发者能打造出功能强大且结构清晰的代码。函数之所以成为C语言的核心,正是因为它解决了编程中的三大关
    的头像 发表于 06-30 17:26 2089次阅读
    深入理解C<b class='flag-5'>语言</b>:<b class='flag-5'>函数</b>—编程中的“积木块”艺术