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

20款机器学习工具,哪种语言最适合程序员入门AI?(上图)

时间:2023-03-14 19:30:54 科技观察

训练有素的士兵不可能空手执行任务。数据科学家拥有自己的武器——机器学习(ML)软件。有许多文章列出了可靠的机器学习工具,并对其功能进行了深入描述。但是,我们的目标是获得行业专家的反馈。这就是为什么我们采访数据科学从业者-大师,真正思考他们为项目选择的有用工具。我们联系的专家具有多种专长,并在Facebook和三星等公司工作。其中一些代表AI初创公司(ObjectionCo、NEAR.AI和Respeecher);一些人在大学(哈尔科夫国立广播大学)任教。机器学习最流行的语言你在一家外国餐厅,你不熟悉那里的文化。你可能会问服务员一些关于菜单上的单词、它们的意思的问题,甚至在你弄清楚你将使用什么餐具之前。因此,在谈论数据科学家最喜欢的工具之前,让我们先了解一下他们使用的是什么编程语言。Python:一种具有高质量机器学习和数据分析库的流行语言Python是一种通用语言,因其可读性、结构良好和相对温和的学习曲线而受到青睐。根据StackOverflow在1月份进行的年度开发人员调查,Python可以称为增长最快的主要编程语言。它是第七大最受欢迎的语言(38.8%),现在比C#(34.4%)领先一步。专门研究应用于语音识别的深度学习的研究主任RespeecherGrantReaber使用Python是因为“几乎每个人都用它来进行深度学习”。SwensforTensorFlow听起来是个很酷的项目,但我们会等到它足够成熟后再考虑使用它,”Grant总结道。这位NEAR.AI创业公司的联合创始人,曾在GoogleResearch的深度学习NLUIlliaPolosukhin的团队工作过,也坚持使用Python:“Python一直是数据分析的语言,随着时间的推移,它已经成为事实上的语言所有现代图书馆都提供深度学习语言。”使用Python进行机器学习的一个用例是模型开发,尤其是原型制作。AltexSoft的数据科学能力负责人AlexanderKonduforov表示,他主要将其用作构建机器学习模型的语言。三星乌克兰的首席工程师VitaliyBulygin认为Python是用于快速原型制作的最佳语言之一。“在原型制作过程中,我找到了最佳解决方案并用项目所需的语言(例如C++)重写,”专家解释道。FacebookAI研究员DenisYarats指出,该语言拥有一套出色的深度学习工具,如PyTorch框架或NumPy库(我们将在本文后面讨论)。C++:CUDA并行计算的中间语言C++是一种基于C编程语言的灵活的、面向对象的静态类型语言。由于其可靠性、性能和它支持的大量应用程序域,该语言在开发人员中仍然很受欢迎。C++被认为是一种中级编程语言,因为它具有高级和低级语言的特点。该语言的另一个应用是开发可以在实时约束下直接与硬件接口的驱动程序和软件。由于C++足够清晰,可以解释基本概念,因此可用于研究和教学。数据科学家将这种语言用于各种特定任务。位于哈尔科夫的国家无线电电子学研究所(NURE)的高级讲师AndriiBabii使用C++在NvidiaGPU计算平台CUDA上并行实现算法,以加速基于这些算法的应用程序。“当我为CUDA编写自定义内核时,我需要C++,”DenisYarats补充道。R:TheLanguageofStatisticalComputingandGraphicsR是统计、可视化和数据分析的语言和环境,是数据科学家的首选。它是S编程语言的另一种实现。R和用它编写的库提供了许多图形和统计技术,例如经典统计测试、线性和非线性建模、时间序列分析、分类、聚类等。您可以使用R机器学习包轻松扩展该语言。该语言允许创建高质量的图表,包括公式和数学符号。AlexanderKonduforov指出,使用R进行机器学习可以实现快速数据分析和可视化。数据分析和可视化工具pandas:一个增强分析和建模的Python数据分析库现在是时候谈谈Pythonpandas,一个名字最可爱的免费库。数据科学爱好者WesMcKinney开发了这个库,用于在Python中轻松进行数据分析和建模。在pandas之前,这种编程语言只适用于数据准备和修改。pandas通过将CSV、JSON和TSV数据文件或SQL数据库转换为数据框、看起来像Excel的Python对象或带有行和列的SPSS表来简化分析。此外,pandas与IPython工具包和其他库集成,以提高性能并支持协作工作。matplotlib:用于高质量可视化的Python机器学习库matplotlib是一个Python二维绘图库。绘图是机器学习数据的可视化。matplotlib源自MATLAB:它的开发者JohnD.Hunter模拟了Mathworks的MATLAB软件中的绘图命令。虽然主要是用Python编写的,但该库使用NumPy和其他代码进行了扩展,因此即使在大型数组中也能表现良好。matplotlib允许使用几行代码生成生产质量的可视化。库开发人员强调了它的易用性:“如果您想查看数据的直方图,您不需要实例化对象、调用方法、设置属性等;它应该可以工作。”seaborn、ggplot和HoloViews等第三方可视化包可以扩展库的功能。专家还可以使用Basemap和cartopy投影和映射工具包添加其他功能。数据科学从业者注意到matplotlib的灵活性和集成能力。例如,AndriiBabii喜欢使用matplotlib和seaborn以及ggplot2。DenisYarats(FacebookAIResearch)表示,他选择matplotlib主要是因为它与Python工具集集成得很好,可以与NumPy库或PyTorch机器学习框架一起使用。AlexanderKonduforov和他的AltexSoft团队也使用matplotlib。该团队选择了dplyr、ggplot2、tidyr和ShinyR库,以及大量的Python机器学习库,例如支持R和Python的pandas和Plotly。“这些工具可以免费使用,但你必须会编程才能至少使用它们,有时需要额外的时间。”JupyterNotebook:协作工作能力JupyterNotebook是一款用于交互式计算的免费Web应用程序。有了它,用户可以使用实时代码创建和共享文档、开发和执行代码以及展示和讨论任务结果。文档可以通过Dropbox、电子邮件、GitHub和JupyterNotebookViewer共享,它可以包含图形和叙述文本。笔记本电脑功能丰富,提供多种使用场景。它可以与许多工具集成,例如ApacheSpark、pandas和TensorFlow。它支持40多种语言,包括R、Scala、Python和Julia。除了这些特性,JupyterNotebook还支持容器平台——Docker和Kubernetes。来自NEAR.AI的IlliaPolosukhin表示,他主要使用JupyterNotebook进行自定义临时分析:“该应用程序允许快速完成任何数据或模型分析,并能够连接到远程服务器上的内核。您还可以与同事分享最终结果。笔记本。”Tableau:强大的数据探索和交互式可视化Tableau是一种用于数据科学和商业智能的数据可视化工具。许多特定功能使该软件能够有效地解决各种行业和数据环境中的问题。通过数据探索和发现,Tableau软件可以快速从数据中提取见解,并以易于理解的格式呈现。它不需要很好的编程技能,可以很容易地安装在各种设备上。大多数操作都是通过拖放完成的,尽管必须编写一个小脚本。Tableau支持实时分析和云集成(即与AWS、Salesforce或SAP),允许组合不同的数据集和集中的数据管理。使用和功能集的简单性是数据科学家选择此工具的原因。“Tableau有许多不需要编码的内置功能。你可以在UI中进行大量的数据预处理、分析和可视化,省了很多功夫。但是,您必须购买许可证,因为它不是免费产品,”AlexanderKonduforov说。通用机器学习框架NumPy:Python科学计算扩展包前面提到的NumPy是一个用Python进行数值计算的扩展包,替代了NumArray和Numeric。它支持多维数组(表)和矩阵。ML数据表示为数组。矩阵是数字的二维数组。NumPy包含广播函数作为集成C/C++和Fortran代码的工具。其函数还包括傅里叶变换、线性代数和随机数函数。数据科学从业者可以使用NumPy作为存储多维通用数据的高效容器。凭借定义任意数据类型的能力,NumPy可以轻松快速地与各种数据库集成。scikit-learn:适用于许多行业的易于使用的机器学习框架scikit-learn是一个开源的Python机器学习库,构建在SciPy(科学Python)、NumPy和matplotlib之上。scikit-learn最初由DavidCournapeau于2007年作为Google代码之夏项目启动,目前由志愿者维护。截至今天,已有1,092人参与。该库专为生产使用而设计。简单、定性的代码、协作选项、性能和以简单语言编写的大量文档有助于它在各种专家中的流行。scikit-learn为用户提供了许多成熟的监督和非监督学习算法。MachineLearningMastery的数据科学从业者JasonBrownlee指出,该库侧重于建模数据,而不是数据的加载、操作和汇总。他建议使用NumPy和pandas来实现这三个功能。DenisYarats使用NumPy、pandas和scikit-learn进行通用机器学习:“我喜欢它们的简单性和透明性。这也有助于这些工具多年来被许多人广泛采用和实战测试。”AltexSoft数据科学团队主要使用scikit-learn和xgboost等Python库来执行分类和回归任务,”Aleksander观察到。AndriiBabii更喜欢使用sc语言来学习R语言库和包。“我使用这种组合是因为它是开源的,具有强大的功能并且相互补充,”数据科学家解释道。NLTK:基于Python的人类语言数据处理平台NLTK是一个用于开发Python程序以使用人类语言的平台。AleksanderKonduforov更喜欢使用此工具来处理NLP任务。“NLTK是几乎是Python文本处理的标准库,它有很多有用的功能。例如,不同类型的文本、句子和文字处理、词性标注、句子结构分析、命名实体识别、文本分类、情感分析等。所有这些库都是免费的,并提供足够的功能来解决大多数问题我们的任务,”专家指出。TensorFlow,anMLFrameworkforNeuralNetworkModeling:AFlexibleFrameworkforLarge-ScaleMachineLearningTensorFlow是一个用于机器学习和深度神经网络研究的开源软件库,由GoogleAI组织内的GoogleBrain团队于2015年开发并发布。该库的一个重要特征是数值计算是由节点和边组成的数据流图执行的。节点表示数学运算,边是多维数据数组或张量,可在其上执行这些运算。TensorFlow非常灵活,可用于各种计算平台(CPU、GPU和TPU)和设备,从台式机到服务器集群,再到移动和边缘系统。它可以在Mac、Windows和Linux上运行。这个框架的另一个优点是它可以用于研究和重复的机器学习任务。TensorFlow有丰富的开发工具,尤其是针对Android。SamsungUkraine的首席工程师VitaliyBulygin说:“如果你需要在Android上实现某些东西,请使用TensorFlow。”ObjectionCo的CEOCurtisBoyd表示,他的团队选择使用TensorFlow进行机器学习,因为它是开源的,而且非常容易集成。谷歌开源的两款AIY套件,让个人轻松获得人工智能。这两个套件专注于计算机视觉和语音助手,装在一个小型自组装纸板箱中,里面装有所有需要的组件。如果你想进一步了解TensorFlow,或者想实践人工智能项目,另一个谷歌工具或许能帮到你,那就是谷歌的AIYProjects项目。AIYVisionKit附带的软件运行三个基于TensorFlow的神经网络。其中一款基于谷歌的MobileNets平台,能够识别1000多种日常物品。第二个可以识别图像中的面孔和表情。最后一个是专门用于识别猫、狗和人的神经网络。TensorBoard:模型训练可视化的绝佳工具TensorBoard是一套工具,用于以图形方式表示TensorFlow中机器学习的不同方面和阶段。TensorBoard读取TensorFlow事件文件,其中包含TensorFlow运行时生成的摘要数据(关于模型特定操作的观察)。绘制模型结构图可以让研究人员确保模型组件在需要的地方并正确连接。使用图形可视化工具,用户可以探索模型抽象的不同层次,放大和缩小模型的任何部分。TensorBoard可视化的另一个重要好处是相同类型和类似结构的节点被涂上相同的颜色。用户还可以按设备(CPU、GPU或两者的组合)查看着色,使用“跟踪输入”功能突出显示特定节点,并一次可视化一个或多个图形。这种可视化方法使TensorBoard成为模型性能评估的流行工具,特别是对于深度神经网络等复杂结构模型。GrantReaber指出TensorBoard可以轻松监控模型训练。Grant和他的团队还使用此工具进行自定义可视化。IlliaPolosukhin也选择了TensorBoard。“TensorBoard在模型开发期间显示指标,并允许对模型做出决策。例如,在调整超参数和选择最佳表现者的同时监控模型的表现非常方便,”Illia总结道。除了显示性能指标外,TensorBoard还可以向用户显示许多其他信息,例如直方图、音频、文本和图像数据、分布、嵌入和标量。