首页 >科技周边 >IT业界 >Python的机器学习底漆

Python的机器学习底漆

Christopher Nolan
Christopher Nolan原创
2025-02-10 15:54:09793浏览

A Primer on Machine Learning with Python

过去十年,机器学习已从科研实验室走向日常的网络和移动应用程序。机器学习使您的应用程序能够执行以前难以编程的任务,例如检测图像中的物体和人脸、检测垃圾邮件和仇恨言论,以及为电子邮件和消息应用程序生成智能回复。

然而,执行机器学习与经典编程有着根本的不同。在本文中,您将学习机器学习的基础知识,并创建一个可以根据花朵测量结果预测花卉种类的基本模型。

关键要点

  • 机器学习已从科学研究实验室发展到日常的网络和移动应用程序,使应用程序能够执行以前难以编程的任务。
  • 机器学习依赖于经验,通过示例训练模型,而不是向其提供规则。机器学习算法有不同的类别,每种类别都可以解决特定问题:监督学习、无监督学习和强化学习。
  • Python 由于其简单性、可读性和广泛的生态系统(包括 Scikit-learn、TensorFlow 和 PyTorch 等库和框架)而成为一种流行的机器学习语言。但是,理解 Python 编程、NumPy、Pandas 和 Matplotlib 等库以及统计和概率的基本概念是前提条件。
  • 实施机器学习模型的过程包括定义问题、收集数据、将数据集拆分为训练集和测试集、构建模型以及评估其性能。交叉验证和训练测试拆分等技术,以及准确性、精确率、召回率和 F1 分数等指标,可用于验证模型的性能。

机器学习的工作原理?

经典编程依赖于可以分解为不同的类、函数和 if-else 命令的明确定义的问题。另一方面,机器学习依赖于根据经验发展其行为。您不是向机器学习模型提供规则,而是通过示例对其进行训练。

机器学习算法有不同的类别,每种类别都可以解决特定问题。

监督学习

监督学习适用于您想要从输入数据到结果的问题。所有监督学习问题的共同特征是存在一个可以用来测试模型的真实情况,例如标记的图像或历史销售数据。

监督学习模型可以解决回归或分类问题。回归模型预测数量(例如销售的商品数量或股票价格),而分类问题试图确定输入数据的类别(例如猫/狗/鱼/鸟、欺诈/非欺诈)。

图像分类、人脸检测、股票价格预测和销售预测是监督学习可以解决的问题示例。

一些流行的监督学习算法包括线性回归和逻辑回归、支持向量机、决策树和人工神经网络。

无监督学习

无监督学习适用于您拥有数据但不是结果,而是寻找模式的问题。例如,您可能希望根据客户的相似性将其分组为细分市场。这在无监督学习中称为聚类。或者,您可能希望检测偏离企业正常活动的恶意网络流量。这称为异常检测,这是另一项无监督学习任务。无监督学习也可用于降维,这是一种通过去除无关特征来简化机器学习任务的技巧。

一些流行的无监督学习算法包括 K 均值聚类和主成分分析 (PCA)。

强化学习

强化学习是机器学习的一个分支,其中智能体试图通过与其环境交互来实现目标。强化学习涉及动作、状态和奖励。未经训练的强化学习智能体从随机采取行动开始。每个动作都会改变环境的状态。如果智能体发现自己处于所需状态,则会获得奖励。智能体试图找到产生最多奖励的动作和状态序列。

强化学习用于推荐系统、机器人技术和游戏机器人,例如谷歌的 AlphaGo 和 AlphaStar。

设置 Python 环境

在这篇文章中,我们将重点关注监督学习,因为它是最流行的机器学习分支,并且其结果更容易评估。我们将使用 Python,因为它具有许多支持机器学习应用程序的功能和库。但是,一般概念可以应用于任何具有类似库的编程语言。

(如果您不熟悉 Python,freeCodeCamp 提供了一个很棒的速成课程,可以帮助您入门。)

通常用于数据科学和机器学习的 Python 库之一是 Scikit-learn,它提供了流行机器学习算法的实现。Scikit-learn 不是基本 Python 安装的一部分,您必须手动安装它。

macOS 和 Linux 预装了 Python。要安装 Scikit-learn 库,请在终端窗口中键入以下命令:

<code>pip install scikit-learn</code>

或对于 Python 3:

<code>python3 -m pip install scikit-learn</code>

在 Microsoft Windows 上,您必须首先安装 Python。您可以从官方网站获取最新版本的 Windows Python 3 安装程序。安装 Python 后,在命令行窗口中键入以下命令:

<code>python -m pip install scikit-learn</code>

或者,您可以安装 Anaconda 框架,其中包括独立安装的 Python 3 以及 Scikit-learn 和许多其他用于数据科学和机器学习的库,例如 NumpyScipyMatplotlib。您可以在其官方网站上找到 Anaconda 免费个人版的安装说明。

步骤 1:定义问题

每个机器学习项目的第一个步骤是了解您想要解决的问题。定义问题将帮助您确定需要收集的数据类型,并让您了解需要使用哪种机器学习算法。

在我们的例子中,我们想要创建一个模型,根据花瓣和萼片长度和宽度的测量结果来预测花的种类。

这是一个监督分类问题。我们需要收集不同花卉标本的测量列表及其相应的物种。然后,我们将使用这些数据来训练和测试一个可以将测量结果映射到物种的机器学习模型。

步骤 2:收集数据

机器学习最棘手的部分之一是收集数据来训练您的模型。您必须找到一个可以收集训练模型所需数量数据的来源。您还需要验证数据的质量,确保它代表模型将处理的不同情况,并避免收集包含隐藏偏差的数据。

幸运的是,Scikit-learn 包含几个玩具数据集,可以用来尝试不同的机器学习算法。“鸢尾花数据集”恰好包含我们问题所需的确切数据。我们只需要从库中加载它即可。

以下代码加载住房数据集:

<code>pip install scikit-learn</code>

鸢尾花数据集包含 150 个观测值,每个观测值包含四个测量值 (iris.data) 和目标花卉种类 (iris.target)。可以在 iris.feature_names 中看到数据列的名称:

<code>python3 -m pip install scikit-learn</code>

iris.target 包含数据集中注册的三个花卉种类之一的数字索引 (0-2)。花卉种类的名称可在 iris.target_names 中找到:

<code>python -m pip install scikit-learn</code>

步骤 3:拆分数据集

在开始训练之前,您必须将数据拆分为训练集和测试集。您将使用训练集来训练机器学习模型,并使用测试集来验证其准确性。

这样做是为了确保您的模型没有过度拟合训练数据。过度拟合是指您的机器学习模型在训练示例上的表现良好,但在未见过的数据上的表现不佳。过度拟合可能是由于选择了错误的机器学习算法、对模型进行了错误的配置、训练数据不佳或训练示例太少而导致的。

根据您正在解决的问题类型和拥有的数据量,您必须确定要分配给测试集的数据量。通常,当您拥有大量数据(大约数万个示例)时,即使只有大约 1% 的小样本也足以测试您的模型。对于包含总共 150 条记录的鸢尾花数据集,我们将选择 75-25 分割。

Scikit-learn 有一个 train_test_split 函数,它将数据集拆分为训练数据集和测试数据集:

<code>from sklearn.datasets import load_iris

iris = load_iris()
</code>

train_test_split 获取数据和目标数据集,并返回用于训练 (X_train 和 y_train) 和测试 (X_test 和 y_test) 的两对数据集。test_size 参数确定将分配给测试的数据百分比(介于 0 和 1 之间)。stratify 参数确保训练数组和测试数组包含来自每个类别的平衡样本数。random_state 变量存在于 Scikit-learn 的许多函数中,用于控制随机数生成器并实现可重复性。

步骤 4:构建模型

现在我们的数据已准备就绪,我们可以创建一个机器学习模型并在训练集上对其进行训练。有许多不同的机器学习算法可以解决我们正在处理的分类问题。在我们的例子中,我们将使用“逻辑回归”算法,它非常快,适用于简单且不包含太多维度的分类问题。

Scikit-learn 的 LogisticRegression 类实现了此算法。实例化它之后,我们将通过调用 fit 函数在我们的训练集 (X_train 和 y_train) 上对其进行训练。这将调整模型的参数以找到测量值和花卉种类之间的映射。

<code>pip install scikit-learn</code>

步骤 5:评估模型

现在我们已经训练了模型,我们想要衡量它的准确性。LogisticRegression 类有一个 score 方法,它返回模型的准确性。首先,我们将衡量模型在训练数据上的准确性:

<code>python3 -m pip install scikit-learn</code>

这将返回大约 0.97,这意味着该模型准确预测了 97% 的训练示例的类别,考虑到我们每个物种只有大约 37 个训练示例,这已经相当不错了。

接下来,我们将检查模型在测试集上的准确性:

<code>python -m pip install scikit-learn</code>

这将给我们大约 95% 的结果,略低于训练准确性,这是很自然的,因为这些是模型从未见过的示例。通过创建更大的数据集或尝试另一种机器学习算法(例如支持向量机),我们或许能够进一步提高模型的准确性,并弥合训练和测试性能之间的差距。

最后,我们想看看如何在新的示例上使用我们训练好的模型。LogisticRegression 类有一个 predict 函数,它以观测值数组作为输入,并返回预测的类别。在我们的花卉分类器模型的情况下,我们需要向它提供四个测量值的数组(萼片长度、萼片宽度、花瓣长度、花瓣宽度),它将返回一个整数,表示花的类别:

<code>from sklearn.datasets import load_iris

iris = load_iris()
</code>

恭喜!您创建了您的第一个机器学习模型。我们现在可以将其组合到一个应用程序中,该应用程序从用户那里获取测量结果并返回花卉种类:

<code>print(iris.feature_names)
'''
['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']
'''
</code>

希望这是您成为机器学习大师的第一步。从这里开始,您可以继续学习其他机器学习算法,学习更多关于机器学习基本概念的知识,并继续学习更高级的主题,例如神经网络和深度学习。通过一些学习和实践,您将能够创建能够检测图像中的物体、处理语音命令并与用户进行对话的非凡应用程序。

使用 Python 进行机器学习的常见问题解答 (FAQ)

学习使用 Python 进行机器学习的先决条件是什么?

要开始学习使用 Python 进行机器学习,您需要对 Python 编程有基本的了解。熟悉 NumPy、Pandas 和 Matplotlib 等库也很有益。此外,对统计和概率的基本了解至关重要,因为它们构成了机器学习算法的核心。

Python 与其他机器学习语言相比如何?

由于其简单性和可读性,Python 是最流行的机器学习语言之一。它拥有广泛的库和框架,例如 Scikit-learn、TensorFlow 和 PyTorch,这些库和框架简化了机器学习模型的开发。R 和 Java 等其他语言也用于机器学习,但 Python 广泛的生态系统使其成为许多人的首选。

我可以使用 Python 实现哪些常见的机器学习算法?

Python 的 Scikit-learn 库提供了各种机器学习算法的实现。一些常用的算法包括线性回归、逻辑回归、决策树、随机森林、支持向量机和 k 近邻。对于深度学习,您可以使用 TensorFlow 和 PyTorch 等库。

如何验证我的 Python 机器学习模型的性能?

您可以使用交叉验证和训练测试拆分等技术来验证模型的性能。Python 的 Scikit-learn 库为此提供了函数。此外,您可以使用准确性、精确率、召回率和 F1 分数等指标来进行分类问题,并使用均方误差或 R 平方来进行回归问题。

我可以使用 Python 进行监督学习和无监督学习吗?

是的,Python 支持监督学习和无监督学习。可以使用 Scikit-learn 等库来实现回归和分类等监督学习算法。对于无监督学习,您可以使用 K 均值、层次聚类和 DBSCAN 等聚类算法。

如何处理机器学习模型中的过度拟合?

可以使用正则化、提前停止和神经网络的 dropout 等技术来处理过度拟合。您还可以使用 bagging 和 boosting 等集成方法来减少过度拟合。

数据预处理在使用 Python 进行机器学习中的作用是什么?

数据预处理是机器学习中的一个关键步骤。它包括清理数据、处理缺失值、编码分类变量和缩放特征。Python 提供了 Pandas 和 Scikit-learn 等库,可以进行高效的数据预处理。

如何使用 Python 可视化机器学习模型的性能?

您可以使用 Matplotlib 和 Seaborn 等库来可视化模型的性能。这些库提供了绘制混淆矩阵、ROC 曲线和学习曲线等图形的函数。

我可以使用 Python 进行自然语言处理 (NLP) 吗?

是的,Python 提供了 NLTK 和 SpaCy 等库用于自然语言处理。这些库提供了标记化、词性标注、命名实体识别和情感分析等功能。

如何部署使用 Python 构建的机器学习模型?

您可以使用 Flask 或 Django 等 Web 框架来部署机器学习模型。对于大规模部署,您可以使用 AWS、Google Cloud 或 Azure 等云平台。它们提供模型部署、扩展和监控的服务。

以上是Python的机器学习底漆的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn