Logo
Section 1 / 7

使用 PyCaret 进行分类

学习如何使用 PyCaret 导入分类所需的库和数据集。

导入

使用 PyCaret 进行分类

学习如何使用 PyCaret 导入分类所需的库和数据集。

分类 是最基本的监督学习任务之一,其目标是预测一个被称为类别标签的分类变量。当只有两个类别(00 和 11)时,该任务称为二分类;若类别数量更多,则称为多分类。最广泛使用的二分类模型之一是逻辑回归,其定义如下方程:

log⁡(pn1−pn)=β0+β1xn1+⋯+βpxnp=βTXn\log \left(\frac{p_{n}}{1-p_{n}}\right) = \beta_{0} + \beta_{1} x_{n1} + \cdots + \beta_{p} x_{np} = \beta^{T} X_{n}
  • log⁡(pn1−pn)\log \left(\frac{p_{n}}{1-p_{n}}\right) 是发生比的自然对数,称为logit函数(即对数几率函数)。
  • x1x_1 到 xpx_p 是特征变量。
  • β0\beta_{0} 是截距项。
  • β1\beta_{1} 到 βp\beta_{p} 是各特征变量的系数。
  • βTXn\beta^{T} X_{n} 是该方程的向量化形式。

我们的目标是计算 pnp_n,即给定数据集中某个样本属于类别 11 的概率。逻辑函数 σ(z)\sigma(z) 是 logit(或对数几率)函数的逆函数,因此我们可以应用它来得到所需结果:

pn=σ(βTXn)=11+exp⁡(−βTXn)p_{n} = \sigma (\beta^{T} X_{n}) = \frac{1}{1 + \exp (-\beta^{T} X_{n})}
...
Classification

PyCaret 中的分类方法

除了逻辑回归外,我们还有许多其他分类模型,例如决策树、K近邻算法(KNN)、线性判别分析和XGBoost。在本章中,我们将了解 PyCaret 如何帮助我们确定哪个模型最适合当前数据集。同时也会进行探索性数据分析(EDA),通过可视化数据的统计特性来加深对数据的理解。

导入必要的库

我们首先导入所需的 Python 库。Pandas、Matplotlib 和 Seaborn 是机器学习与数据科学中的标准库。此外,我们还会导入 PyCaret 分类模块中的所有函数。

1# 导入必要库 2 3import numpy as np 4import pandas as pd 5import matplotlib.pyplot as plt 6import matplotlib as mpl 7import seaborn as sns 8from pycaret.datasets import get_data 9from pycaret.classification import * 10mpl.rcParams['figure.dpi'] = 300

加载数据集

正如我们在回归章节中首次看到的那样,PyCaret 内置了多个适用于机器学习任务的数据集。本项目使用的是 Iris 数据集,这是用于训练和测试分类模型最流行的数据集之一,由 UCI 机器学习仓库免费提供。该数据集包含三个类别:“Iris Setosa”、“Iris Versicolor” 和 “Iris Virginica”,均为鸢尾属植物的不同种类。特征包括每株植物的萼片长度、萼片宽度、花瓣长度和花瓣宽度。如前所述,现实世界的数据通常更为复杂,但像 Iris 这样的教学用数据集能帮助我们更轻松地掌握机器学习技术。

我们使用 PyCaret 提供的 get_data() 函数将 Iris 数据集加载为一个 Pandas DataFrame。

1# 加载/导入数据集 2 3data = get_data('iris')

从输出可以看到,前 55 行数据被打印出来,这等价于 Pandas 的 head() 函数输出结果。

使用 Pandas 的 info() 函数可以查看数据集的一些基本信息。

1# 获取数据集信息 2 3data.info()

从输出中可以看出,数据集共有 150150 行和 55 列。所有特征变量均为数值型,而目标变量为类别型,符合预期。数据类型已自动推断,如有需要也可手动修改。

异常检测

探索性数据分析