购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.2 使用鸢尾花数据集训练感知机

为了测试前一小节实现的感知机代码,本章剩余部分使用的样本只有两个特征变量(维度)。尽管感知机规则并不限于二维,但仅使用两个特征(萼片长度和花瓣长度)可以在散点图中可视化训练模型的决策区域,以便于我们学习模型。

请注意,由于感知机是二元分类器,这里也只考虑两种类型的花,即山鸢尾和变色鸢尾。然而,也可以推广感知机算法解决多元分类问题,例如,使用一对多(One-versus-All,OvA)方法。

用于多元分类的OvA方法

OvA有时也被称为一对其余(One-versus-Rest,OvR),是一种将二元分类器用于多元分类任务的方法。OvA为每个类别训练一个分类器,此类别被视为正类,所有其他类别都被视为负类。如果要对新的未标记数据样本进行分类,使用 n 个分类器对样本分类,其中 n 为类别标签的数量,并将置信度最高的分类器输出的标签作为最终预测标签。在使用感知机情况下,OvA选择与最大净输入值对应的类别作为分类标签。

首先,使用pandas从UCI机器学习库将鸢尾花数据集加载到DataFrame对象中,并用tail方法打印数据的最后五行,以检查是否正确加载数据:

运行上述代码后,可以看到如图2.5所示的输出,这里显示了鸢尾花数据集的最后五行:

图2.5 鸢尾花数据集的最后五行

加载鸢尾花数据集

如果无法上网或UCI的服务器(https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data)宕机,可以从本书的代码集下载鸢尾花数据集(也包括本书所有其他的数据集)。如果本地计算机存储了鸢尾花数据集,可从本地文件加载鸢尾花数据,使用

替换如下代码:

接下来,提取50朵山鸢尾和50朵变色鸢尾对应的100个类别标签,并将类别标签转换为两个整数,分别为1(山鸢尾)和0(变色鸢尾)。将转换后的类别标签存入向量y中。pandas中DataFrame的values方法生成的NumPy数据可以作为向量y。

类似地,从这100个训练样本中提取第一个特征列(萼片长度)和第三个特征列(花瓣长度),并将它们存入特征矩阵X中,这可以通过二维散点图可视化:

运行上述代码后,可以看到图2.6所示的散点图。

图2.6显示了鸢尾花数据集在“花瓣长度”和“萼片长度”两个特征维度上的样本分布情况。从这个二维特征分布图中可以看出一个线性决策边界足以将山鸢尾与变色鸢尾分开。因此,像感知机这样的线性分类器应该能够完美地对数据集中的花朵进行分类。

现在,在刚刚提取的鸢尾花数据子集上训练感知机算法。此外,绘制每次迭代的分类错误,以检查算法是否收敛,并找到两种鸢尾花数据的决策边界:

图2.6 山鸢尾和变色鸢尾萼片长度与花瓣长度的散点图

理想情况下 ,参数更新的次数与样本误分类的次数相同。运行上述代码后,可以得到参数更新次数与epoch次数之间的关系图,如图2.7所示。

图2.7 参数更新次数与epoch次数的关系图

如图2.7所示,感知机在第6个epoch后开始收敛。在此之后,感知机应该能够完美地对训练样本进行分类。下面通过一个短小精干的函数实现二维数据集决策边界的可视化:

首先,定义许多colors和markers,并通过ListedColormap从颜色列表中创建一个colormap。然后,确定两个特征的最小值和最大值,调用NumPy的meshgrid函数创建一对网格数组xx1和xx2。由于在两个特征维度上训练感知机,因此需要展平网格数组,并创建一个与鸢尾花训练数据集具有相同列数的矩阵,以便可以使用predict方法预测相应网格点的类别标签lab。

将预测的类别标签lab重塑为与xx1和xx2尺寸相同的网格后,可以通过Matplotlib中的contourf函数绘制轮廓图,将网格数组中不同预测类的决策区域映射为不同的颜色:

在运行上述代码后,可以看到如图2.8所示的决策区域图。

图2.8 感知机的决策区域图

正如图2.8所示,感知机学习到了一个决策边界,可以完美地对鸢尾花训练数据集进行分类。

感知机收敛问题

虽然感知机可以完美地区分两种类别的鸢尾花,但收敛问题是感知机的最大问题之一。Frank Rosenblatt已经从数学上证明,如果包含两个类别的数据可以被一个线性超平面分离,那么感知机学习规则收敛。然而,如果不存在这样一个能将数据中的两个类别完全分开的线性决策边界,那么除非设定最大epoch次数,否则算法将永远不会停止权重更新。有兴趣的读者可以从下述网站找到关于该问题的证明:https://sebastianraschka.com/pdf/lecture-notes/stat453ss21/L03_perceptron_slides.pdf QrgQQsfSNGThosh5838KxKbyobGBArhKhXFirTS+j8Hgu0v6b6TvWJwl0TvzOkBL

点击中间区域
呼出菜单
上一章
目录
下一章
×