声明:该文章的主要代码,所有截图均来自Introduction to Machine Learning with Python, by Andreas C. Muller & Sarah Guido.
在机器学习中,线性模型也广泛应用于分类。但是除了logistic regression,其他许多分类模型仅能用于二分类。
笔者最近在学习Introduction to Machine Learning with Python, by Andreas C. Muller & Sarah Guido. 在这本书中提到,将二分类算法推广到多分类算法的一种常见方法是“一对其余”(one-vs.-rest). 在这个方法中,对每个类别都学习一个二分类模型,将这个类别与所有其他类别尽量分开。在预测时,则利用所有的二项分类器进行分类,在对应单个类别上分数最高的分类器“胜出”,返回这个类别标签为预测结果。
在本书的第二章(Chapter 2: Supervised Learning),64页,作者将one-vs.-rest方法应用在一个简单的三分类数据集上,代码如下:
# copyright: Andreas C. Muller & Sarah Guido
import mglearn
import numpy as np
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",