You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SVC算法中如何绘制预测决策图?

绘制SVC决策边界可视化图

要实现类似scikit-learn官网的SVC决策图,没有现成的一键函数,但可以通过生成特征空间网格 + 模型预测网格类别 + 可视化渲染的方式手动实现,以下是完整的可运行方案:

完整代码示例

import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.datasets import make_blobs

# 1. 生成示例二分类数据(可替换为自己的数据集)
X, y = make_blobs(n_samples=100, centers=2, random_state=42, cluster_std=1.0)

# 2. 训练SVC模型
svc_model = SVC(kernel='linear', C=1.0)
svc_model.fit(X, y)

# 3. 生成覆盖特征空间的网格点
h = 0.02  # 网格步长
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                     np.arange(y_min, y_max, h))

# 4. 用模型预测网格点的类别
Z = svc_model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

# 5. 绘制决策图
plt.figure(figsize=(8, 6))
# 绘制决策区域的颜色背景
plt.contourf(xx, yy, Z, alpha=0.8, cmap=plt.cm.Paired)
# 绘制原始样本点
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Paired)
# 绘制支持向量
plt.scatter(svc_model.support_vectors_[:, 0], svc_model.support_vectors_[:, 1],
            s=150, facecolors='none', edgecolors='red', label='Support Vectors')

plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('SVC Decision Boundary')
plt.legend()
plt.show()

关键步骤解释

  • 数据准备:用make_blobs生成模拟二分类数据,实际使用时替换为你自己的二维特征矩阵X和标签y即可(高维特征需先通过PCA等方法降维到二维才能可视化)。
  • 模型训练:初始化并训练SVC模型,示例用线性核,可根据需求更换为rbf、poly等核函数。
  • 网格生成:通过meshgrid生成覆盖整个特征范围的密集网格点,确保完整呈现决策边界细节。
  • 网格预测:将网格点展平后输入模型预测类别,再还原为网格形状,用于绘制颜色区域。
  • 可视化渲染:
    • contourf绘制决策区域的填充颜色,区分不同类别的预测范围;
    • scatter绘制原始样本点,用颜色区分真实类别;
    • 标记出支持向量(红色空心点),还原SVC模型的核心特征,和官网示例风格一致。

如果适配多分类场景,只需确保数据集为多分类标签,模型初始化时设置decision_function_shape='ovr'或'ovo',可视化逻辑无需大幅修改。

内容的提问来源于stack exchange,提问作者Jakub Szurlej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:40:33