翻译|刘涛评论|孙淑娟人工智能(AI)和机器学习(ML)是我们的日常伴侣,很难想象没有算法和统计模型的生活。每当我们听到机器学习这个词时,首先想到的就是Python。因为Python长期以来一直是机器学习的代言人,在帮助实现机器学习的技术层面上发挥了重要的作用。Python可能是最优雅的机器学习语言,48.24%的开发人员使用它。由于Python具有强大便捷的底层包和高层API接口,在科学计算的各个领域都具有无可比拟的优势,但在用于特定任务时也存在一些劣势。因此,Python替代语言的需求越来越普遍。目前,很多新兴语言在性能上都可以与Python相媲美,甚至优于Python。所以它不再是机器学习的唯一选择。Scala、Julia、MQL5和其他不是Python超集的语言可用于开发和交付机器学习应用程序。所以机器学习不再局限于Python。本文将探讨新机器学习语言的出现、它们如何侵蚀Python的市场份额以及机器学习的未来。1.Python的缺点让我们讨论一下开发人员和数据科学家经常面临的Python的一些缺点。性能和速度Python开发很快,但计算速度很慢。它使用解释器而不是编译器。由于顺序代码执行,它比其他数据科学编程语言慢。Python比C慢,因为C有很多有用的工具和库。除非您掌握矢量化代码,否则您会发现它有多慢。Cython是Python的超集。它将Python源代码编译成C语言代码。最重要的是提供C语言级别的计算速度,无需额外的计算资源。许多程序员使用Cython编写Python代码的速度与C语言一样快,但更加简洁易读。设计限制Python有一个巨大的设计缺陷,这是由它的动态类型引起的。通常编程语言中的动态类型变量不需要特殊声明。Python使用鸭子类型,这令人困惑。在鸭子类型中,对象的类或属性不如其功能重要。鸭子类型不需要类型检查。您还可以验证流程或属性。低效的内存消耗Python由于其庞大的结构而使用大量内存。此外,Python数据类型在内存消耗方面很灵活。它不适合内存密集型任务。其灵活的数据类型也导致内存消耗。因此,当您创建大型且长时间运行的Python系统时,Python中的内存管理变得具有挑战性。线程不足Python线程的效率低于其他语言。Python虽然是多线程的,但是一次只能执行一个线程。因此多线程Python提供了单线程的处理效率。Python有一个全局解释器锁(GIL),一次只能有一个线程使用。同时运行多个线程只有在Python使用本机库时才有可能。另外,Python的超集Jython可以实现多线程,而Python不能。2.为什么数据科学家要寻找Python的替代品?Python真的很酷。但它不可能同时是闪电侠和绿巨人!有人可能需要闪电侠,有人可能需要绿巨人。用户需求是多种多样的。同样,Python也不是为数学和数据科学应用而设计的。它需要第三方库,如NumPy或Tensorflow,专用于深度学习算法。因此,数据特定的编程语言比Python更有优势。例如,在商业世界中,机器学习需要速度和可扩展性以减少执行时间。你不能让顾客等太久。所以你需要更快的ML语言(通用函数式编程语言)来执行。越快越好。现在,Python很快,但是还有什么比Python更快的呢?是的,是Julia或Scala!在这种情况下,数据科学家更愿意使用与Python不同的编程语言。3.数据科学的Python替代品在各种应用程序环境中,有几种Python替代品的性能与Python一样好或更好。以下是用于数据科学的Python的一些替代方案:(1)JuliaJulia是一种新型的高级动态编程语言,具有创新性、快速性和舒适性。它是一种能够编写各种应用程序的通用语言。值得一提的是,其封装生态系统和功能中有很大一部分是面向高级数值计算的,非常适合机器学习。Julia建立在多种语言之上,包括C和高级动态语言,如Python、R和MATLAB。Julia借鉴了这些语言的可选类型、语法和特性,因为Julia旨在整合它们的优点并消除它们的缺点。Julia的创建者想要开发一种语言,能够像C一样快速处理科学计算、机器学习、数据挖掘、大规模线性代数、分布式和并行计算。然而,他们最终开发的语言更快。尽管Python越来越快,但Julia打败了它。Julia简化了机器学习中使用的许多数学符号。提供ArrayFire等多种GPU编程包,使GPU能够执行通用代码。每个包都有自己独特的编程模型,比如NVIDIA有CUDA.jl,AMD有AMDGPU.jl和oneAPI。机器学习工程师可以在大型集群中快速部署Julia,受益于其强大的工具,例如MLBase.jl、Flux.jl(深度学习)、MLJ.j(通用机器学习)和Knet.jl(深度学习)。Flux是一个高速深度机器学习库,预装了额外的工具来最大化Julia的能力。同样,ScikitLearn.jl、TensorFlow.jl和MXNet.jl也包含在ML应用程序中。Julia擅长解决复杂的计算问题。因此,包括斯坦福大学、东京都立大学在内的多所名校都开设了Julia课程。与Python相比,它的性能也很稳定。(2)Scala许多像LoganKilpatrick这样的行业高管认为Julia是机器学习和数据科学的未来。Julia的主要特性:Julia的一些核心特性支持高效的数据科学计算:Julia的操作速度很快。比Python快2-20倍;灵活丰富的库函数;内置包管理器;PyCall和CCall包直接调用Python;使用类似shell的函数来管理其他进程;为并行和分布式计算而开发;参数类型生成高效的代码;具有麻省理工学院许可证的免费开源软件。Scala是一种高级编程语言,同时支持面向对象和函数式编程技术。MartinOdersky创建了它,并于2004年6月正式推出。Scala在开发人员中越来越受欢迎,并且正在跨越当今的技术。Scala是一种与Java应用程序和库兼容的Java虚拟机(JVM)语言。因为它缺乏基本数据的概念,所以它通常被认为是一种静态语言。它的多范式、多核架构很复杂。ApacheSpark是一个强大而快速的实时数据流和数据处理工具。ScalaSpark有助于完成复杂的映射、ETL和大数据处理任务。Scala允许用户通过理解代码来实现新的Spark功能。Scala与Java的兼容性使程序员能够快速掌握面向对象的概念。SparkMLlib在Spark中包含高质量的算法和出色的性能,使其成为可扩展的机器学习库。分类、回归、聚类、协同过滤和降维都包含在Spark的MLlib机器学习库中。此外,Breeze、Spire、Saddle和Scalalab是其他一些有助于创建强大数据处理应用程序的ML库。ApacheKafka是一个开源的分布式事件流平台。随着Python的流行,Spark也开始流行起来。在ScalaSpark中执行缓慢的东西必然会在PySpark中崩溃。此外,您可以使用TensorFlowScala库为机器学习模型创建适应性强的高性能服务系统。Scala的静态类型有助于复杂的应用程序。它的JVM和JavaScript运行时使高性能系统能够轻松访问库。此外,它的性能优于Python。在与Python的对比中也站稳了脚跟。Scala的一些核心特性支持高效的数据科学计算:Scala比Python快10倍;具有先进的类型推断机制;样本类(案例类)和模式匹配;具有简洁但易于阅读的表达式提供高阶函数;使用单例对象而不是静态变量;使用OOP、FP或混合风格的代码;Scala源代码被编译成“.class”文件,在JVM上执行。(3)MQL5MQL5是一种高级的面向对象编程语言,提供高级数据分析和机器学习功能。它基于广泛使用和知名的编程语言C++,并以其速度和多功能性而著称。MQL5不是像Python、Julia或Scala这样的日常机器学习语言。它是专门为金融市场创建的,用于监控金融工具。该语言的核心与其他语言相似,但具有独特的功能。MQL5支持整数、布尔值、文字、字符串、日期、时间和枚举。它将结构和类都定义为复杂数据类型。MQL5语言文档列出了函数、操作、保留字等。此外,它还提供整数、布尔值、文字、字符串、日期和时间数据类型。它具有复杂的结构和类。此外,该文档还包括用于交易策略、仪表板、自定义视觉效果、文件访问等的标准库类定义。此外,MQL5拥有超过1,500个用于新应用程序开发的源代码库。您可以使用包含大量函数的ALGLIB库进行数值分析。同样,还有用于处理时间序列的TimeSeries库和用于开发模糊模型的Fuzzy库,以及其他各种库。MQL5是一种功能强大的编程语言,可以帮助您构建提供视觉决策辅助的实时系统。MQL5支持枚举、结构、类和事件。通过增加主要嵌入式函数的数量,MQL5程序可以与DLL进行通信。MQL5具有类似于C++的语法,可以轻松地将使用不同编程语言编写的程序转换为MQL5程序。因此,在使用数据分析、人工智能或金融工具作为交易机器人时,您可以达到与C++相同的效率。MQL5的主要特点MQL5的一些核心功能可实现高效的数据科学计算:MQL5基于C++。因此,其速度可与C++相媲美,超过Python;专为金融市场的工具和分析而创建;完全事件驱动;1500+源代码库;可以预定义标准常量和枚举。存储信息的服务架构;更改配色方案、创建仪表板、添加自定义交易品种以及从MQL5程序导出价格图表;12种新绘图风格,512个缓冲区,从过去到未来的直接索引值计算;在4.您应该选择哪种PythonML替代方案?编程语言就像驾驶赛车。一辆合适的车是必不可少的,更不用说司机了。同样,作为数据科学家,您是这些独特跑车的驾驶员。每个数据科学家或开发人员对特定技术都有自己的要求和规范。最佳技术选择取决于您需要的视角和功能。因此,很难做出最终选择。如果要实现多进程计算,对计算速度要求非常高,可以选择Julia。它是三者中最快的。另一方面,如果您正在做大型项目,Scala应该是更好的选择,因为它可以胜任这项任务。如果您对金融工具感兴趣,MQL5是最佳选择。同样,每种编程语言都有自己的特点和擅长的领域。因此,最佳做法是选择一种符合您的要求和规范的语言。5.总结机器学习是一个持续不断发展的过程。随着时间的推移,它与标准化ML(SML)语言一起出现,并在Python中流行起来。如今,机器学习语言的发展多种多样,需求也各不相同。简而言之,Python是一种优秀的机器学习语言。但Python并不是一种数据科学专用语言,有更多的现代编程语言可以比它更高效地执行某些任务。因此,新兴的编程语言正在机器学习领域获得市场份额和增长。希望在接下来的几年里,它们也能流行起来。原文链接:https://hackernoon.com/not-only-python-problems-errors-and-alternatives译者介绍刘涛,社区编辑,某大型央企系统在线检测管控负责人,其主要职责是严格审核系统上线验收,做过漏检、渗透测试、基线检查等多项检测任务。多年网络安全管理经验,多年PHP及Web开发及防御经验,Linux使用及管理经验。他在代码审计、网络安全测试和威胁方面有丰富的经验。采矿经验。精通KaliSQL审计、SQLMAP自动检测、XSS审计、Metasploit审计、CSRF审计、webshel??l审计、maltego审计等技术。
