当前位置: 首页 > 科技观察

用Python

时间:2023-03-21 19:34:38 科技观察

R或Python编写您最喜欢的R函数怎么样?Python脚本模拟易于使用的R风格函数,使统计变得简单易行。“Pythonvs.R”是数据科学和机器学习的现代战争之一。毫无疑问,这两者近年来发展迅猛,成为数据科学、预测分析和机器学习领域的首选编程语言。事实上,根据IEEE最近的一篇文章,Python已经取代C++成为顶级编程语言列表中的顶级语言,而R稳居前10名。然而,两者之间存在一些根本差异。R语言主要是作为统计分析和数据分析问题的快速原型设计工具而设计的,另一方面,Python是作为一种通用的、现代面向对象的语言开发的,类似于C++或Java,但学习起来更简单曲线和更灵活的语言风格。因此,R在统计学家、定量生物学家、物理学家和经济学家中仍然很受欢迎,而Python逐渐成为日常脚本、自动化、后端Web开发、分析和通用机器学习框架的首选语言***拥有广泛的支持基础和开源开发社区。在Python环境下模仿函数式编程R作为函数式编程语言的本质,为用户提供了快速计算概率的极其简洁的接口,也为数据分析问题提供了必要的描述和推理统计方法(LCTT译注:Statistics在功能上分为描述性统计和推断性统计)。例如,只用一个简洁的函数调用就可以解决以下问题不是很好吗?如何计算数据向量的均值/中值/众数。如何计算服从正态分布的某些事件的累积概率。如何计算是否服从泊松分布?如何计算一系列数据点的四分位距。如何生成一些服从学生t分布未知总体均值的随机数)。R编程环境可以完成这一切。另一方面,Python的脚本功能使分析人员能够以前所未有的复杂性和创造性在各种分析过程中使用这些统计数据。为了结合两全其美,您所需要的只是一个简单的Python包装库,其中包含与概率分布和R风格中定义的描述性统计相关的最常见函数。这使您可以非常快速地调用这些函数,而无需转到适当的Python统计库并了解整个方法和参数列表。用于轻松调用R函数的Python包装器脚本导入此脚本后,您将能够在本地使用这些R函数,就像在R编程环境中一样。该脚本的目标是提供简单的Python函数,模仿R风格的统计函数,快速计算密度和点估计、累积分布和分位数,并生成重要概率分布的随机变量。为了与R风格保持一致,脚本不使用类结构,文件中只定义了原始函数。因此,用户在需要单名调用时,导入此Python脚本即可使用所有功能。请注意,我使用了模仿这个词。无论如何,我声称要模仿R的真正函数式编程范例,其中包括深层环境设置以及这些环境和对象之间的复杂关系。这个脚本允许我(我希望无数其他Python用户)快速启动Python程序或JupyterNotebook程序,导入脚本,并立即开始进行简单的描述性统计。这就是目标,仅此而已。如果您编写过R代码(可能在研究生院)并且刚刚开始学习和使用Python进行数据分析,您会很高兴在Jupyter笔记本中看到和使用一些与您相同的知名函数在R环境中。无论出于何种原因,这个脚本使用起来都很有趣。简单示例首先,只需导入脚本并开始处理数字列表,就好像它们是R中的数据向量一样。fromR_functionsimport*lst=[20,12,16,32,27,65,44,45,22,18]假设您要根据数据向量计算Tuckey五数摘要。您只需调用一个简单的函数fivenum并传入向量。它将返回一个包含五个数字的摘要,存储在一个NumPy数组中。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=[]importmatplotlib.pyplotaspltforiinrange(11):probs.append(dbinom(i,10,0.6))plt.bar(range(11),height=probs)plt.grid(True)plt.show()简单的概率计算界面R提供了一个非常简单直观的界面,用于从基本概率分布进行快速计算。接口如下:ddistribution:给出x点的密度函数值pdistribution:给出x点的累积值qdistribution:给出概率为p的分位数函数值rdistribution:在我们的实现中生成一个或多个随机变量,我们坚持这个接口及其相关的参数列表,这样你就可以像在R环境中一样执行这些功能。目前实现的函数脚本中实现了以下R风格的函数,方便快速调用。均值、中值、方差、标准差Tuckey五数汇总、四分位数间距(IQR)密度、累积概率、低于矩阵协方差或两个向量之间的协方差的分布的分位数函数以及随机变量生成:正态、均匀、二项式,Poisson,F,Student'st,Chi-square,beta,andgamma显然是一项正在进行的工作,我计划在这个脚本中添加一些其他方便的R函数。例如,在R中,单行命令lm可以为数值数据集提供一个简单的最小二乘拟合模型,其中包含所有必要的推论统计(P值、标准误差等)。这很整洁!另一方面,Python中的标准线性回归问题通常使用Scikit-learn库来处理,这需要为此编写更多脚本,因此我打算使用Python的statsmodels库来合并这个单函数线性模型来拟合函数。