“ Python 是一种通用的编程语言,广泛用于人工智能项目开发。它有很多可用的库,可以帮助开发人员构建各种人工智能应用程序,如自然语言处理和机器学习。在本文中,我们将介绍一些最流行的 Python 库,以及它们在人工智能项目开发中的应用。”
最近研究人工智能方面的项目落地,接触到不少Python开源库。一开始也不认识,遇到代码里的开源库,就去问大模型 ChatGPT,Google Bard,Claude。随着项目落地的深入,越觉得需要系统的了解一些开源库。
01
—
Scikit-learn:机器学习
Scikit-learn是一个用于实现机器学习算法的 Python 库。
2007年,年轻开发者David Cournapeau以学生身份推出了scikit-learn。这一开源工具很快赢得了社区的喜爱,多年来持续迭代更新,得到了广泛应用和推崇。
官网:https://scikit-learn.org/stable/
Scikit-learn涵盖了全部关键机器学习算法,涵盖SVM、随机森林、梯度提升、k均值聚类和DBSCAN等。其目标在于与NumPy和SciPy(后续介绍)无缝整合,实现数据清洗、预处理和计算。内含模块可方便地载入数据并分割成训练集与测试集。同时,支持文本和图像数据的特征提取。
Scikit-learn 是所有涉足机器学习领域的从业者的不可或缺工具。不论您是否需实施分类、回归、聚类、模型选择等算法,它都被誉为最优之选。
缺点:Scikit-learn诞生于深度学习盛行之前。尽管它在核心机器学习和数据科学领域表现出色,但在如今大多数应用大型模型的情景中,更多倾向于使用TensorFlow或PyTorch(后续介绍)。
学习资源: 使用 Scikit-Learn 进行 Python 机器学习。
https://www.youtube.com/playlist?list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A
02
—
NumPy:处理数字
NumPy是Python的一个库,用于处理数组和大量同质数据。想象数组如电子表格,数据存储于列和行。
官网:https://numpy.org/
2005年,Travis Oliphant将十多年开发成果整合,创造出名为NumPy的数值计算库。
NumPy主要支持数组操作,可快速处理和操作大量数据集。数组可以是多维的,适用于单列或多行数字。库含线性代数函数模块,亦有绘图功能。NumPy数组中的同质数据有助于高效处理。
适用场景:适合处理和操作数据,进行高级数据科学及机器学习操作。处理数字时,NumPy是必需的。
缺点:由于NumPy数组为同构,不适用于混合数据。处理超过50万列时,性能可能下降。建议在这种情况下使用Python列表。
学习地址: Coursera 的Linear Regression with NumPy and Python 。
https://www.coursera.org/projects/linear-regression-numpy-python
03
—
Pandas:操作数据
Pandas是一个用于处理多类型标记数据的库。若需处理包含数字、字母和字符串的CSV文件等,Pandas是首选。
官网:https://pandas.pydata.org/
2008年,Wes McKinney发布了Pandas。它建基于NumPy(安装NumPy后方可使用),用于处理异构数据。
特点:Pandas主要特色在于多样的数据结构,可执行多种分析操作。包括数据重塑、连接、合并、透视等模块。还具备数据可视化功能,可执行微积分和统计等数学运算,无需外部库。同时,它还有模块帮助您处理丢失数据。
适用场景:数据分析。
缺点:与普通Python相比,Pandas的学习曲线较陡,文档质量也不佳,可能导致学习难度较大。
学习地址:DeepLearning.AI 的Pandas 课程。
https://learn.deeplearning.ai/pandas/lesson/1/introduction
04
—
Python SciPy:数据科学做数学计算
SciPy是一个用于科学计算的Python库,涵盖多个包和模块,助力科学家进行实验和分析。
官网:https://docs.scipy.org/doc/scipy/
2001年,Python开源社区开发的一系列满足科学需求的工具,以SciPy形式发布。
特点:SciPy软件包括完整的数学技术工具集,涵盖微积分、线性代数、统计、概率等领域。受欢迎的功能包括插值、K均值测试、数值积分、傅里叶变换、正交距离回归和优化。此外,还包含图像处理和信号处理的包。Weave功能允许在Python中使用C/C++编写代码。
适用场景:SciPy是数据科学家的得力助手。
缺点:SciPy文档不足,部分软件包不如MatLab中类似软件包。
学习资源:Ahmad Bazzi的"SciPy编程"教程。
https://www.youtube.com/watch?v=ARYCvrEW1fw
05
—
TensorFlow
TensorFlow是端到端开源库,用于开发、训练和部署深度学习模型。
官网:https://www.tensorflow.org/
TensorFlow最初由Google Brain于2015年发布。初始版本前端不够友好,多余API让模型构建繁琐。随后通过更新和将Keras整合为默认前端(后续介绍)解决了诸多问题。
TensorFlow提供了多个软件包,用于构建、扩展深度学习模型以进行商业部署。
TensorFlow用户可调用开发中心(https://tfhub.dev/)和模型花园(https://github.com/tensorflow/models/tree/master/official)中的数百个预训练模型。
开发中心含即用模型,模型花园则适合高级用户自定义。TensorFlow能有效利用内存,可并行训练多个神经网络。可运行于多种硬件系统,如CPU、GPU、TPU等。TensorFlow Lite优化移动和嵌入式机器学习模型。用户可在Tensorboard.dev(https://tensorboard.dev/)上分享机器学习实验。
适用场景:适用于大规模构建生产可用的深度学习模型。
缺点:前端较复杂,遭到关于执行速度缓慢的批评,主要因TensorFlow 1.0默认以图模式执行操作。TensorFlow 2.0改进为默认急切执行模式。
学习资源:DeepLearning.ai的"TensorFlow开发课程"。
https://www.deeplearning.ai/courses/tensorflow-developer-professional-certificate/
06
—
Keras
Keras是为TensorFlow提供前端接口的神经网络工具包。
Google工程师Francois Chollet于2015年发布了Keras,成为多个深度学习库的API。截至2020年,Keras已成为TensorFlow独有。
特点:Keras专注于TensorFlow中构建神经网络的高级任务,包含激活函数、层、优化器等基本模块。
Keras支持常规神经网络、卷积神经网络、循环神经网络及实用层,如批量归一化、dropout和池化。旨在简化深度神经网络的编码。
适用场景:适用于深度学习网络的开发。
缺点:仅适用于TensorFlow用户。
学习资源:IBM的"Keras深度学习和神经网络简介"。
https://www.coursera.org/learn/introduction-to-deep-learning-with-keras
07
—
Pytorch
PyTorch是Facebook AI研究实验室对TensorFlow的响应,是一款开源通用库,用于机器学习、数据科学(尤其是深度学习)。
官网:https://pytorch.org/
2016年,Facebook发布了PyTorch,紧随TensorFlow发布一年后。其简化的前端和立即执行操作的默认模式使其在学术界和快速原型设计领域受到欢迎。
PyTorch与TensorFlow具有诸多相似功能。
PyTorch拥有自己的预训练模型库,PyTorch Hub为学术用户提供模型设计尝试,生态系统工具包含预训练模型。PyTorch具备高内存效率,能并行训练多个模型,并支持多种硬件类型。
适用场景:适用于快速原型设计深度学习模型。PyTorch代码运行速度高效。
缺点:部分用户认为PyTorch在处理大型项目、大数据集和复杂工作流方面有些难。构建大规模部署人工智能产品的开发者可能更偏向TensorFlow。
学习资源:PyTorch官方教程,详见PyTorch.org
https://pytorch.org/tutorials/
08
—
LangChain:LLM应用架构
它是什么:LangChain 是一个开源框架,这个框架是用来让开发者进行 LLMs (大语言模型)应用开发的。
可以理解是为各种 LLM 开发的脚手架,将 LLM 的各个组件进行封装和链接。把 LLMs 相关的组件“链接”在一起,简化 LLMs 应用的开发难度,方便开发者快速地开发复杂的 LLMs 应用。
官方地址:https://langchain.com/
背景:LangChain 的作者是 Harrison Chase,最初是于 2022 年 10 月开源的一个项目,在 GitHub 上获得大量关注之后迅速转变为一家初创公司。
特点:LangChain 用于连接人工智能大语言模型LLM来生成人工智能文本。
它是基于论文《ReAct: Synergizing Reasoning and Acting in Language Models》的实现:该论文展示了一种提示技术,允许模型「推理」(通过思维链)和「行动」(通过能够使用预定义工具集中的工具,例如能够搜索互联网)。
Langchain 作为一个大语言模型应用开发框架,解决了现在开发人工智能应用的一些切实痛点:数据滞后,token 数量限制,不能进行联网,不能与其他数据源链接。
作为一个胶水层框架,极大地提高了开发效率,它的作用可以类比于 jquery 在前端开发中的角色,使得开发者可以更专注于创新和优化产品功能。
LangChian 可以将 LLM 模型、向量数据库、交互层 Prompt、外部知识、外部工具整合到一起,进而可以自由构建 LLM 应用。
LangChain 包含六部分组成,分别为:Models、Prompts、Indexes、Memory、Chains、Agents。
最适合:让开发人员更方便进行 LLM 应用开发的一套框架,集成了很多家公司的 LLM。将这些 LLM 进行抽象,提供了很多组件和扩展能力,支持更复杂的 LLM 应用。
缺点:学习成本很高,而且对于小型项目来说并不容易使用。
学习地址:LangChain 中文文档网站
https://www.langchain.com.cn/
09
—
Gradio
它是什么:Gradio是一个用于快速构建交互式应用程序的开源Python库。它可以帮助开发者轻松地将机器学习模型集成到用户友好的界面中,从而使模型更易于使用和理解。
官方地址:https://gradio.app/
背景:Gradio 由软件工程师和数据科学家Abubakar Abid 于2020 年1 月首次发布,目的是让研究人员和开发人员能够轻松构建和共享其模型和数据的交互式界面。用于为机器学习模型和其他数据处理功能创建可定制的接口。
特点:Gradio适用于以下情况:
-
为客户/合作者/用户/学生演示机器学习模型。
通过自动共享链接快速部署你的模型,并获得对模型性能的反馈。
在开发过程中使用内置的操作和解释工具交互式地调试模型。
Gradio提供了多种输入和输出类型,以便创建更复杂的交互式应用程序。以下是一些常见的输入和输出类型:text:文本、number:数字、slider:滑块、checkbox:复选框、radio:单选按钮、dropdown:下拉菜单、image:图像、file:文件。
Gradio的默认布局非常简单,也可以使用Gradio组件的高级选项来自定义应用程序的布局。
Gradio支持多种部署方式,包括本地部署、云部署和Web应用程序部署。本地部署适用于测试和开发环境,而云部署和Web应用程序部署适用于生产环境。
gradio可以在启动应用时设置share=True参数创建外部分享链接,
gradio可以在jupyter中直接展示页面,更加方便调试。
最适合:Gradio是一个非常灵活和易于使用的库,可以快速构建机器学习模型的用户友好界面。可以帮助我们将模型部署到生产环境中,并通过Web应用程序向最终用户提供服务。
缺点:黑黄色的界面不是很符合流行的审美。
学习地址:Gradio 官方文档
https://gradio.app/docs/
掌握人工智能最好的办法就是不断学习!
参考地址:
https://www.deeplearning.ai/blog/essential-python-libraries-for-machine-learning-and-data-science/
https://cloud.tencent.com/developer/article/2313918
阅读推荐:
MM-Vet的多模态评估标准如何评估大型多模态模型(LMM)在复杂任务上的表现
Atom Capital:大模型在金融领域落地,想说爱你不容易
$100亿模型的扩张有望2年内实现通用人工智能—与 Claude 创始人Dario Amodei 访谈录
深度解析 Llama 2 的资源汇总:不容错过
OpenAI又推新:使用ChatGPT进行内容审核
中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用
ChatGLM团队发布AI Agent能力评测工具AgentBench:GPT-4一骑绝尘,开源模型表现非常糟糕!
ChatGPT 微信助手上线!问答更便捷,功能持续升级中。
拥抱未来,学习 AI 技能!关注我,免费领取 AI 学习资源。