Python 分类模型决策边界可视化:plot_decision_boundary 函数解析

该函数用于绘制分类模型的决策边界,通过颜色和标记对不同类别进行可视化,并使用等高线图绘制决策边界,最终生成直观的模型分类结果图。

def plot_decision_boundary(model, x, y):
    color = ['r', 'g', 'b']
    marker = ['o', 'v', 'x']
    class_label = np.unique(y)
    cmap = ListedColormap(color[:len(class_label)])
    x1_min, x2_min = np.min(x, axis=0)
    x1_max, x2_max = np.max(x, axis=0)
    x1 = np.arange(x1_min - 1, x1_max + 1, 0.02)
    x2 = np.arange(x2_min - 1, x2_max + 1, 0.02)
    x1, x2 = np.meshgrid(x1, x2)
    z = model.predict(np.array([x1.ravel(), x2.ravel()]).T).reshape(x1.shape)
    # 绘制颜色填充的等高线
    plt.contourf(x1, x2, z, cmap=cmap, alpha=0.5)
    for i, class_ in enumerate(class_label):
        plt.scatter(x=x[y == class_, 0], y=x[y == class_, 1], c=cmap.colors[i], label=class_, marker=marker[i])
    plt.legend()
    plt.show()

代码解读

  1. 定义颜色和标记列表colormarker 列表用于不同类别的可视化,分别包含红色、绿色、蓝色和圆形、倒三角形、叉号标记。
  2. 获取类别标签的唯一值class_label 变量存储所有类别标签的唯一值,用于后续映射到颜色和标记。
  3. 创建颜色映射对象cmap 变量创建一个颜色映射对象,将类别标签映射到对应的颜色,color[:len(class_label)] 确保颜色数量与类别数量一致。
  4. 计算特征的最小和最大值x1_min, x2_min, x1_max, x2_max 变量分别存储两个特征的最小值和最大值,用于生成网格点。
  5. 创建等间隔的网格点x1x2 变量使用 np.arange 函数创建等间隔的网格点,覆盖特征值的范围,并使用 np.meshgrid 函数生成二维网格。
  6. 使用模型对网格点进行预测z 变量使用模型对网格点进行预测,得到每个点的预测结果,并使用 reshape 函数将预测结果调整为与网格点形状一致。
  7. 绘制颜色填充的决策边界plt.contourf 函数使用等高线图绘制颜色填充的决策边界,颜色映射使用 cmap 变量,透明度设置为 0.5
  8. 根据类别标签和颜色映射绘制数据点:使用 plt.scatter 函数根据类别标签和颜色映射绘制数据点,c=cmap.colors[i] 设置数据点颜色,label=class_ 设置数据点标签,marker=marker[i] 设置数据点标记。
  9. 显示图形plt.legend 显示图例,plt.show 显示绘制的图形。

函数参数

  • model: 训练好的分类模型对象。
  • x: 特征数据,通常是一个二维数组,每行表示一个样本,每列表示一个特征。
  • y: 标签数据,通常是一个一维数组,表示每个样本的类别标签。

应用场景

该函数可用于直观地展示分类模型的决策边界,帮助理解模型的分类能力,例如:

  • 评估模型的泛化能力,观察模型在训练数据之外的区域的分类效果。
  • 比较不同分类模型的决策边界,选择更适合特定问题的模型。
  • 分析特征对分类结果的影响,观察特征值变化对决策边界的影响。

通过使用 plot_decision_boundary 函数,可以更好地理解和评估分类模型,从而提高模型的性能和应用效果。

Python 分类模型决策边界可视化:plot_decision_boundary 函数解析

原文地址: https://www.cveoy.top/t/topic/fvFM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录