在机器学习中,逻辑回归是一种广泛使用的分类算法。它不仅可以用于二分类问题,还可以通过一些技巧扩展到多类别分类问题。本文将介绍如何使用Python的scikit-learn库来绘制多类别逻辑回归和One-vs-Rest(OvR)逻辑回归的决策边界,以直观展示这两种方法在数据集上的分类效果。
多类别逻辑回归是将二分类逻辑回归扩展到多类别情况的一种方法。在这种设置下,每个类别都有一个逻辑回归模型,用于预测样本属于该类别的概率。通过比较这些概率,可以确定样本最有可能属于的类别。
在下面的代码示例中,首先生成了一个包含三个类别的数据集,然后使用逻辑回归模型进行训练,并绘制了决策边界。可以看到,决策边界清晰地将不同类别的样本分隔开来,显示出模型良好的分类效果。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_blobs
from sklearn.inspection import DecisionBoundaryDisplay
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsRestClassifier
# 生成三类数据集
centers = [[-5, 0], [0, 1.5], [5, -1]]
X, y = make_blobs(n_samples=1000, centers=centers, random_state=40)
transformation = [[0.4, 0.2], [-0.4, 1.2]]
X = np.dot(X, transformation)
# 训练多类别逻辑回归模型
clf = LogisticRegression(solver='sag', max_iter=100, random_state=42)
clf.fit(X, y)
# 绘制决策边界
_, ax = plt.subplots()
DecisionBoundaryDisplay.from_estimator(clf, X, response_method='predict', cmap=plt.cm.Paired, ax=ax)
plt.title("多类别逻辑回归决策边界")
plt.axis("tight")
plt.show()
One-vs-Rest(OvR)是一种多类别分类策略,它将多类别问题转化为多个二分类问题。对于每个类别,训练一个二分类模型,将该类别与其他所有类别区分开来。在预测时,为每个样本计算所有类别的预测概率,然后选择概率最高的类别作为最终预测结果。
在下面的代码示例中,同样生成了一个包含三个类别的数据集,然后使用One-vs-Rest逻辑回归模型进行训练,并绘制了决策边界。可以看到,每个类别都有一个决策边界,将该类别与其他类别区分开来。这些决策边界共同构成了多类别分类的完整决策边界。
# 训练One-vs-Rest逻辑回归模型
clf = OneVsRestClassifier(LogisticRegression(solver='sag', max_iter=100, random_state=42))
clf.fit(X, y)
# 绘制决策边界
_, ax = plt.subplots()
DecisionBoundaryDisplay.from_estimator(clf, X, response_method='predict', cmap=plt.cm.Paired, ax=ax)
plt.title("One-vs-Rest逻辑回归决策边界")
plt.axis("tight")
plt.show()
通过上述代码示例,可以看到多类别逻辑回归和One-vs-Rest逻辑回归在数据集上的分类效果。两种方法都能很好地将不同类别的样本分隔开来,显示出良好的分类性能。在实际应用中,可以根据具体问题和数据集的特点,选择合适的多类别分类方法。