Python 分类模型决策边界可视化:plot_decision_boundary 函数解析
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()
代码解读
- 定义颜色和标记列表:
color和marker列表用于不同类别的可视化,分别包含红色、绿色、蓝色和圆形、倒三角形、叉号标记。 - 获取类别标签的唯一值:
class_label变量存储所有类别标签的唯一值,用于后续映射到颜色和标记。 - 创建颜色映射对象:
cmap变量创建一个颜色映射对象,将类别标签映射到对应的颜色,color[:len(class_label)]确保颜色数量与类别数量一致。 - 计算特征的最小和最大值:
x1_min,x2_min,x1_max,x2_max变量分别存储两个特征的最小值和最大值,用于生成网格点。 - 创建等间隔的网格点:
x1和x2变量使用np.arange函数创建等间隔的网格点,覆盖特征值的范围,并使用np.meshgrid函数生成二维网格。 - 使用模型对网格点进行预测:
z变量使用模型对网格点进行预测,得到每个点的预测结果,并使用reshape函数将预测结果调整为与网格点形状一致。 - 绘制颜色填充的决策边界:
plt.contourf函数使用等高线图绘制颜色填充的决策边界,颜色映射使用cmap变量,透明度设置为0.5。 - 根据类别标签和颜色映射绘制数据点:使用
plt.scatter函数根据类别标签和颜色映射绘制数据点,c=cmap.colors[i]设置数据点颜色,label=class_设置数据点标签,marker=marker[i]设置数据点标记。 - 显示图形:
plt.legend显示图例,plt.show显示绘制的图形。
函数参数
- model: 训练好的分类模型对象。
- x: 特征数据,通常是一个二维数组,每行表示一个样本,每列表示一个特征。
- y: 标签数据,通常是一个一维数组,表示每个样本的类别标签。
应用场景
该函数可用于直观地展示分类模型的决策边界,帮助理解模型的分类能力,例如:
- 评估模型的泛化能力,观察模型在训练数据之外的区域的分类效果。
- 比较不同分类模型的决策边界,选择更适合特定问题的模型。
- 分析特征对分类结果的影响,观察特征值变化对决策边界的影响。
通过使用 plot_decision_boundary 函数,可以更好地理解和评估分类模型,从而提高模型的性能和应用效果。
原文地址: https://www.cveoy.top/t/topic/fvFM 著作权归作者所有。请勿转载和采集!