支持向量机

1.简介

支持向量机(Support Vector Machine,简称 SVM)是机器学习领域中一种非常强大且优雅的分类算法。

想象桌面上散落着两种颜色的球,SVM 的任务是画一条直线(在更高维空间里被称为超平面),将这两类球分开。

但 SVM 不仅仅是随手画条线,它的目标是找到一条最优边界 ,使得这条边界到两类数据点之间的距离(即间隔 Margin)最大化。这条边界就像一条"最宽的街道",两边的球离街道越远,分类就越稳健。

A. 支持向量 (Support Vectors)

并不是所有的数据点都对划分界限有贡献。SVM 只关注那些离边界最近的点,这些点被称为"支持向量"。如果删掉其他点,模型不会改变;但如果移动这些点,边界就会随之变动。

B. 超平面 (Hyperplane)

  • • 在二维空间是一条线。

  • • 在三位空间是一个面。

  • • 在 维空间中,它是 维的超平面。

C. 核函数 (Kernel Trick) ------ 维度打击

当数据在当前维度无法用直线分开时(例如红球围成一圈,蓝球在中间),SVM 会通过核函数将数据投影到更高维的空间,从而实现"降维打击"式的线性分割。

2.代码实现

复制代码
def run_svm_analysis(X_train, X_test, y_train, y_test, kernel='rbf', C=1.0, gamma=0.7):
    """
    接收数据并进行 SVM 训练与可视化
    """
    # 初始化并训练模型
    clf = svm.SVC(kernel=kernel, C=C, gamma=gamma)
    clf.fit(X_train, y_train)

    # 简单评估
    y_pred = clf.predict(X_test)
    print(f"训练完成!使用 {kernel} 核函数,测试集准确率: {accuracy_score(y_test, y_pred):.4f}")

    # --- 绘图逻辑 ---
    plt.figure(figsize=(10, 7))
    
    # 确定绘图边界
    X_combined = np.vstack((X_train, X_test))
    x_min, x_max = X_combined[:, 0].min() - 0.5, X_combined[:, 0].max() + 0.5
    y_min, y_max = X_combined[:, 1].min() - 0.5, X_combined[:, 1].max() + 0.5
    
    xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
                         np.arange(y_min, y_max, 0.02))

    # 绘制决策区域
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.3)

    # 绘制训练集点
    plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=plt.cm.coolwarm, edgecolors='k', label='Train Data')
    # 绘制测试集点 (用不同标记)
    plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.coolwarm, marker='x', alpha=0.6, label='Test Data')
    
    # 突出显示支持向量
    plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100,
                facecolors='none', edgecolors='gold', linewidth=1.5, label='Support Vectors')

    plt.title(f"SVM Analysis (Kernel={kernel}, C={C})", fontsize=14)
    plt.legend()
    plt.show()

    return clf

3.结果展示

相关推荐
tedcloud1235 小时前
UI-TARS-desktop部署教程:构建AI桌面自动化系统
服务器·前端·人工智能·ui·自动化·github
曦月逸霜8 小时前
啥是RAG 它能干什么?
人工智能·python·机器学习
AI医影跨模态组学8 小时前
Lancet Digit Health(IF=24.1)广东省人民医院刘再毅&南方医科大学南方医院梁莉等团队:基于可解释深度学习模型预测胶质瘤分子改变
人工智能·深度学习·论文·医学·医学影像·影像组学
应用市场8 小时前
AI 编程助手三强争霸(2026 版):Claude、Gemini、GPT 各自擅长什么?
人工智能·gpt
CSND7408 小时前
YOLO resume断点续训(不能用官方的权重,是自己训练一半生成的last.pt)
深度学习·yolo·机器学习
AC赳赳老秦8 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
脑极体8 小时前
从Token消耗到DAA增长,AI价值标尺正在重构
人工智能·重构
csdn小瓯8 小时前
LangGraph自适应工作流路由机制:从关键词匹配到智能决策的完整实现
人工智能·fastapi·langgraph
QYR-分析9 小时前
高功率飞秒激光器行业发展现状、市场机遇及未来趋势分析
大数据·人工智能
AI医影跨模态组学9 小时前
J Clin Oncol(IF=43.4)美国Cedars-Sinai医学中心等团队:基于计算组织学人工智能的晚期胰腺癌化疗选择预测性生物标志物的开发与验证
人工智能·机器学习·论文·医学·医学影像·影像组学