许多线性分类模型只适用于二分类,不能轻易推广到多类别问题(除了logisitic回归)。将二分类算法推广到多分类算法的一种常见的方法是“一对其余”。在“一对其余”中对每个类别都学习一个二分类模型,将这个类别与所有其他类别尽量分开,这样就生成了类别个数一样多多的二分类。
在测试点上运行所有二分类器来进行预测,在对应类别上分数最高的分类器“胜出”,将这个类别标签返回作为预测结果。每个类别都对应一个二分类器,这样每个类别也就有一个系数(w)向量和一个截距(b)。
多分类logistic回归背后的数学与“一对其余”方法稍微有所不同。不过也是对每个类别都有一个系数向量和一个解决,也使用了相同的预测方法。
下面我们将“一对其余”方法应用在一个简单的三分类数据上。我们用到了一个二维数据及,每个类别的数据都是从一个高斯分布中蔡阳得出,代码如下:
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
x, y = make_blobs(random_state=42) #导入数据集
#以下代码进行绘图
mglearn.discrete_scatter(x[:, 0], x[:, 1], y)
plt.xlabel('Feature 0')
plt.ylabel('Feature 1')
plt.legend(['Class 0', 'Class 1', 'Class 2'])
运行结果如下图所示:
包含三个类别的二维玩具集
现在,