7个用于机器学习和数据科学的基本 Python 库

news2024/12/23 11:18:20
推荐:使用 NSDT场景编辑器 助你快速搭建3D应用场景

这篇文章针对的是刚开始使用Python进行AI的人,以及那些有经验的人,但对下一步要学习什么有疑问的人。我们将不时花点时间向初学者介绍基本术语和概念。如果您已经熟悉它们,我们鼓励您跳过更基本的材料并继续阅读,以了解对图形执行和急切执行等更精细的观点的看法。这篇文章将解释人工智能最重要的 Python 库和包,解释如何使用它们,并介绍它们的优点和缺点。

用于AI和ML的最广泛使用的Python库

将正确的库组合添加到开发环境中至关重要。以下包和库对于大多数 AI 开发人员至关重要。所有这些都可以作为开源发行版免费提供。

Scikit-learn:如果你需要做机器学习

它是什么:Scikit-learn是一个用于实现机器学习算法的Python库。

背景:一位名叫David Cournapeau的开发人员最初在2007年以学生身份发布了scikit-learn。开源社区迅速采用了它,多年来已经多次更新它。

特征: Scikit-learn中的软件包专注于建模数据。

  • Scikit-learn包括所有核心机器学习算法,其中包括向量机,随机森林,梯度提升,k均值聚类和DBSCAN。
  • 它旨在与 NumPy 和 SciPy(如下所述)无缝协作,以进行数据清理、准备和计算。
  • 它具有用于加载数据以及将其拆分为训练集和测试集的模块。
  • 它支持文本和图像数据的特征提取。

最适合:Scikit-learn是任何从事机器学习工作的人的必备品。如果您需要实现分类、回归、聚类、模型选择等算法,它被认为是可用的最佳库之一。

缺点:Scikit-learn是在深度学习起飞之前建立的。虽然它非常适合核心机器学习和数据科学工作,但如果你正在构建神经网络,你将需要TensorFlow或Pytorch(下图)。
最佳学习场所:Python 中的机器学习与数据学校的 Scikit-Learn 一起。(注意:Scikit-learn是最容易学习的Python库之一。一旦你精通Python本身,Scikit-learn就很容易了。

NumPy:如果您需要处理数字

它是什么:NumPy是一个Python包,用于处理数组或大型同质数据集合。您可以将数组视为电子表格,其中数字存储在列和行中。

背景:Python在1991年推出时最初并不是为了数值计算。尽管如此,它的易用性还是很早就引起了科学界的注意。多年来,开源社区开发了一系列用于数值计算的软件包。2005年,开发人员Travis Oliphant将十多年的开源开发合并到一个用于数值计算的库中,他称之为NumPy。

特征:NumPy的核心功能是对数组的支持,它允许您快速处理和操作大型数据集合。

  • NumPy 中的数组可以是 n 维的。这意味着数据可以是单列数字,也可以是多列和多行数字。
  • NumPy有用于执行一些线性代数函数的模块。
  • 它还具有用于绘制和绘制数字数组的模块。
  • NumPy 数组中的数据是同质的,这意味着它必须全部定义为相同的类型(数字、字符串、布尔值等)。这意味着数据得到有效处理。

最适合:操作和处理数据以进行更高级的数据科学或机器学习操作。如果你正在处理数字,你需要NumPy。

缺点:由于 NumPy 数组是同类的,因此它们不适合混合数据。你最好使用Python列表。此外,当处理超过 500,000 列时,NumPy 的性能往往会下降。
最佳学习场所:Linear Regression with NumPy and Python from Coursera。

Pandas:如果您需要操作数据

它是什么:Pandas是一个同时处理不同类型的标记数据的软件包。例如,如果您需要分析包含数字、字母和字符串数据的 CSV 文件,则可以使用它。

背景:韦斯·麦金尼(Wes McKinney)于2008年发行了《熊猫》。它建立在 NumPy 之上(事实上,您必须安装 NumPy 才能使用 Pandas),并扩展该包以处理异构数据。

特征:Pandas的核心功能是其多样化的数据结构,允许用户执行各种分析操作。

  • Pandas 有各种用于数据操作的模块,包括重塑、连接、合并和透视。
  • 熊猫具有数据可视化功能。
  • 用户可以执行数学运算,包括微积分和统计,而无需调用外部库。
  • 它具有可帮助您解决丢失数据的模块。

最适合:数据分析。

缺点:在vanilla Python和Pandas之间切换可能会令人困惑,因为后者的语法稍微复杂一些。熊猫的学习曲线也很陡峭。这些因素,再加上糟糕的文档,可能使其难以上手。
最好的学习场所:我从 DeepLearning.AI 开始介绍pandas。

SciPy:如果你需要为数据科学做数学

它是什么:SciPy是一个用于科学计算的Python库。它包含用于执行计算的包和模块,可帮助科学家进行或分析实验。

背景:在 1990 年代末和 2000 年代初,Python 开源社区开始开发一系列工具以满足科学界的需求。2001年,他们以SciPy的形式发布了这些工具。社区保持活跃,并始终更新和添加新功能。

特征:SciPy 的软件包包括一个完整的数学技术工具包,包括微积分、线性代数、统计学、概率等。

  • 它对数据科学家来说最受欢迎的一些软件包是用于插值、K 均值检验、数值积分、傅里叶变换、正交距离回归和优化。
  • SciPy 还包括用于图像处理和信号处理的软件包。
  • Weave功能允许用户在Python中用C / C++编写代码。

最适合:SciPy是数据科学家最好的朋友。

缺点:一些用户发现 SciPy 的文档缺乏,并批评它的几个软件包不如 MatLab 中的类似软件包。

最佳学习场所:Ahmad Bazzi 的 SciPy 编程。

如果你需要做机器学习:TensorFlow vs. PyTorch

TensorFlow和PyTorch执行与深度学习相关的相同基本任务:它们使获取数据,训练模型和生成预测变得容易。从人脸识别到大型语言模型,许多神经网络都是使用TensorFlow或PyTorch进行编码的。这些库曾经在前端和后端都明显不同。随着时间的推移,他们围绕同一套最佳实践趋同。

尽管如此,人工智能社区内部仍在争论哪个是最好的。2015年发布的TensorFlow是第一个出现在现场。它在商业人工智能和产品开发中占主导地位,但许多用户抱怨它的复杂性。

PyTorch于2016年发布,被广泛认为它更容易学习,实施起来更快。它是学术界的最爱,并在工业界稳步普及。但是,众所周知,它在缩放方面很困难。

选择哪个?

TensorFlow仍然是业界占主导地位的深度学习库。这部分是由于惯性,部分原因是TensorFlow在处理大型项目和复杂工作流程方面比PyTorch更好。它能够处理针对商业部署进行扩展的 AI 产品,使其成为产品开发的最爱。

如果你只是跳入深度学习,并希望专注于快速构建和原型设计模型,PyTorch可能是更好的选择。请注意,根据你的工作要求和公司技术,你可能有一天必须学习TensorFlow(特别是如果你梦想的工作是在TensorFlow的故乡谷歌)。

在下面详细了解这两个库的优缺点。

TensorFlow

这是什么? TensorFlow 是一个端到端的开源库,用于开发、训练和部署深度学习模型。

背景: TensorFlow最初由Google Brain于2015年发布。最初,它的前端不是用户友好的,并且它具有冗余的API,这使得构建和实现模型变得繁琐。随着时间的推移,其中许多问题已经通过更新以及通过将 Keras(见下文)集成为默认前端而得到解决。

特征: TensorFlow有许多用于构建深度学习模型并将其扩展以进行商业部署的软件包。

  • TensorFlow用户可以调用Dev Hub和Model Garden中的数百个预先训练的模型。开发人员中心包含即插即用模型,而模型花园适用于习惯于进行自定义的更高级用户。
  • 它在使用内存方面非常有效,可以并行训练多个神经网络。
  • TensorFlow 应用程序可以在各种硬件系统上运行,包括 CPU、GPU、TPU 等。
  • TensorFlow Lite针对移动和嵌入式机器学习模型进行了优化。
  • 用户可以在 Tensorboard.dev 上自由上传和分享他们的机器学习实验。

最适合:大规模构建生产就绪的深度学习模型。

缺点:一些用户仍然抱怨前端相当复杂。您可能还会遇到TensorFlow执行缓慢的批评。这主要是TensorFlow 1.0的遗留问题,当时它默认以图形模式执行操作。TensorFlow 2.0默认为预先执行模式。

最佳学习场所:来自 DeepLearning.ai 的TensorFlow开发人员专业证书。

Keras:

它是什么:Keras是一个适合初学者的工具包,用于处理神经网络。它是TensorFlow的前端接口。

背景:谷歌工程师Francois Choillet于2015年发布了Keras,作为许多深度学习库的API。截至 2020 年,Keras 是 TensorFlow 独有的。

特征: Keras 处理在 TensorFlow 中构建神经网络的高级任务,因此包含激活函数、层、优化器等基本模块。

  • Keras 支持原版神经网络、卷积神经网络和递归神经网络以及实用程序层,包括批量归一化、辍学和池化。
  • 它旨在简化深度神经网络的编码。

最适合:开发深度学习网络。

缺点:它仅适用于TensorFlow用户。如果你使用TensorFlow,你就是在使用Keras。

最佳学习场所: IBM 的 Keras 深度学习和神经网络简介。

PyTorch

它是什么:PyTorch是Facebook AI研究实验室对TensorFlow的回答。它是一个开源的通用库,用于机器学习和数据科学,特别是深度学习。

背景: Facebook在2016年发布了PyTorch,比TensorFlow晚了一年,它迅速受到对快速原型感兴趣的学者和其他研究人员的欢迎。这是由于其简化的前端以及其默认模式立即执行操作的事实(而不是像TensorFlow那样将它们添加到图形中以供以后处理)。

特征:PyTorch有许多类似于TensorFlow的特性。事实上,自推出以来的几年里,每个库都进行了更新,以包含用户最喜欢的功能。

  • PyTorch有自己的预训练模型库。PyTorch Hub 面向想要尝试模型设计的学术用户,生态系统工具包含预先训练的模型。
  • PyTorch 具有内存效率,可以并行训练多个模型。
  • 它支持多种硬件类型。

最适合:深度学习模型的快速原型设计。Pytorch 代码运行快速高效。

缺点:一些用户报告说,PyTorch 在处理大型项目、大型数据集和复杂的工作流程时遇到了困难。构建要大规模部署的AI产品的开发人员可能更喜欢TensorFlow。

最佳学习地点:来自 PyTorch.org 的 PyTorch 教程。

结论

Python库的成熟是它在AI社区中如此受欢迎的主要原因之一。它们可以轻松地将Python扩展到远远超出其原始设计的任务。一旦你牢牢掌握了 Python 语言和与你的工作相关的库,你将能够为广泛的应用程序构建、训练和迭代机器学习模型。

原文链接:7个用于机器学习和数据科学的基本 Python 库 (mvrlink.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/929991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Moonbeam生态跨链互操作项目汇总

立秋已过,今年的夏天已经接近尾声,即将迎来凉爽的秋天。Moonbeam生态一同以往持续成长,在8月也举办了不少活动、完成集成合作以及协议更新。让我们一同快速了解Moonbeam生态项目近期发生的大小事件吧! Moonwell Moonwell是一个建…

《Kubernetes故障篇:Container runtime network not ready》

一、环境信息 操作系统K8S版本containerd版本Centos7.6v1.24.17v1.6.12 二、背景信息 1、通过以下命令检查网络插件的状态,发现网络插件coredns处于pending状态 2、通过以下命令检查kubelet服务状态,发现Container runtime network not ready等报错 三…

yolov5添加SimAM注意力机制(yolov7同理)

SimAM注意力机制简介 关于SIMAM注意力机制的原理这里不再详细解释,这篇发在Proceeddings of the 38th Internation Conference on Machine Learning.论文参考如下论文链接here   yolov5中添加SimAM注意力机制 注意力机制分为接收通道数和不接受通道数两种。这次属于不接受通…

自制编程语言基于c语言实验记录之二:总结三四五六七章之编译类定义

博客前言 由于本书第六七章是编译脚本语言sparrow生成指令、虚拟机运行指令的核心章节,需要连在一起理解,同时三四五章都是六七章的铺垫,所以专门写多篇博客来记录六七章。 同时本书相比《操作系统真相还原》缺少具体例子很难梳理项目整体代…

如何解决“缺失msvcp110.dll”错误,msvcp110.dll丢失要怎样才能修复

今天,我将为大家分享关于电脑提示msvcp110.dll丢失的3种修复方法。希望这些方法能帮助到正在遇到这个问题的朋友们。 首先,我们来了解一下msvcp110.dll文件的作用。msvcp110.dll是Microsoft Visual C 2010 Redistributable Package的一部分,…

【android12-linux-5.1】【ST芯片】HAL移植后没调起来

ST传感器芯片HAL按官方文档移植后&#xff0c;测试一直掉不起来&#xff0c;加的日志没出来。经过分析&#xff0c;是系统自带了一个HAL&#xff0c;影响的。 按照官方文档&#xff0c;移植HAL后&#xff0c;在/device/<vendor\>/<board\>/device.mk*路径增加PROD…

leetcode刷题(字符串相加、包含每个查询的最小区间、模拟行走机器人、环形子数组的最大和、满足不等式的最大值、四数之和、树中距离之和)

目录 1、字符串相加 2、包含每个查询的最小区间 3、模拟行走机器人 4、环形子数组的最大和 5、满足不等式的最大值 6、四数之和 7、 树中距离之和 1、字符串相加 class Solution:def addStrings(self, num1: str, num2: str) -> str:i len(num1) - 1 # num1的末…

温故知新之:代理模式,静态代理和动态代理(JDK动态代理)

0、前言 代理模式可以在不修改被代理对象的基础上&#xff0c;通过扩展代理类&#xff0c;进行一些功能的附加与增强。 1、静态代理 静态代理是一种代理模式的实现方式&#xff0c;它在编译期间就已经确定了代理对象&#xff0c;需要为每一个被代理对象创建一个代理类。静态代…

Spring与MyBatis集成 AOP整合PageHelper插件

目录 1.什么是集成&#xff1f; 2.Spring与MyBatis集成 3.Spring与MyBatis集成的基本配置 4.AOP整合PageHelper插件 1.什么是集成&#xff1f; 集成是指将不同的组件、框架或系统整合到一起&#xff0c;使它们可以协同工作、相互调用、共享资源等。通过集成&#xff0c;可以…

浏览器的事件循环

其实在我们电脑的操作系统中&#xff0c;每一个运行的程序都会由自己的进程&#xff08;可能是一个&#xff0c;也可能有多个&#xff09;&#xff0c;浏览器就是一个程序&#xff0c;它的运行在操作系统中&#xff0c;拥有一组自己的进程&#xff08;主进程&#xff0c;渲染进…

咸虾米之一些快捷方式的操作,一行方块的左右滑动,方块在一区域内的任意移动

由于本着只学习微信小程序的目的&#xff0c;上面的几篇博文都是跟着黑马程序的课程走的&#xff01;后面的就讲解uni-app的实验呢&#xff01;一个人的精力是有限的&#xff0c;于是换了们课程继续深造微信小程序&#xff01;&#xff01;&#xff01; 以下是在 .wxml中的一些…

leetcode 541.反转字符串II

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/reverse-string-ii/ ps&#xff1a; 这道题描述的有点晦涩难懂&#xff0c;意思就是每隔k个反转k个&#xff0c;末尾不够k个时全部反转&#xff0c;开始就不够k个也全部反转。 代码&#…

C++day5(静态成员、类的继承、多继承)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.静态数据成员静态成员函数&#xff08;银行账户实例&#xff09; #include <iostream>using namespace std;class BankAccount { private:double balance; //余额static double interest_rate; //利率 p…

本地部署 Stable Diffusion(Mac 系统)

在 Mac 系统本地部署 Stable Diffusion 与在 Windows 系统下本地部署的方法本质上是差不多的。 一、安装 Homebrew Homebrew 是一个流行的 macOS &#xff08;或 Linux&#xff09;软件包管理器&#xff0c;用于自动下载、编译和安装各种命令行工具和应用程序。有关说明请访问官…

创建K8s pod Webhook

目录 1.前提条件 2.开始创建核心组件Pod的Webhook 2.1.什么是Webhook 2.2.在本地k8s集群安装cert-manager 2.3.创建一个空的文件夹 2.4. 生成工程框架 2.5. 生成核心组件Pod的API 2.6.生成Webhook 2.7.开始实现Webhook相关代码 2.7.1.修改相关配置 2.7.2.修改代码 2…

2023最新AI创作系统ChatGPT网站源码V2.6.0+详细图文搭建安装教程/GPT联网/支持ai绘画+Dall-E2绘画/支持MJ以图生图

一、AI系统 如何搭建部署AI创作ChatGPT系统呢&#xff1f;小编这里写一个详细图文教程吧&#xff01; SparkAi使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到AIGC系统&#xff01; 程序核心功能 程序已支持ChatGPT3.5/4.0提问、AI绘画、Midjourney绘画&#xff08;…

Vue2向Vue3过度核心技术组件通信

目录 1 组件基础知识scoped解决样式冲突1.1 默认情况&#xff1a;1.2 代码演示1.3 scoped原理1.4 总结 2 组件基础知识data必须是一个函数2.1 data为什么要写成函数2.2 代码演示2.3 总结 3 组件通信3.1 什么是组件通信&#xff1f;3.2 组件之间如何通信3.3 组件关系分类3.4 通信…

leetcode 392. 判断子序列

2023.8.25 本题要判断子序列&#xff0c;可以使用动态规划来做&#xff0c;定义一个二维dp数组。 接下来就是常规的动态规划求解子序列的过程。 给出两种定义dp数组的方法。 二维bool型dp数组&#xff1a; class Solution { public:bool isSubsequence(string s, string t) …

升级Go 版本到 1.19及以上,Goland: file.Close() 报错: Unresolved reference ‘Close‘

错误截图 解决方法 File -> Settings -> Go -> Build Tags & Vendoring -> Custom tags -> 添加值 “unix” 原因 Go 1.19 引入了unix构建标签。因此&#xff0c;需要添加unix到自定义标签。 参考 https://blog.csdn.net/weixin_43940592/article/det…

VScode代码自动补全提示

VScode代码自动补全提示 打开设置 搜索 Suggest:Snippets Prevent Quick Suggestions &#xff0c;去掉勾选 CtrlShiftP打开setting.json文件&#xff0c;添加以下代码 "editor.suggest.snippetsPreventQuickSuggestions": false,"editor.quickSuggestions…