【机器学习】支持向量机SVM|高斯核 讲解及代码实现

支持向量机 SVM

支持向量机介绍

  • SVM全称是Supported Vector Machine(支持向量机)

    • 即寻找到一个超平面使样本分成两类,并且间隔最大。
    • 是一种监督学习算法,主要用于分类,也可用于回归
    • 与逻辑回归和决策树等其他分类器相比,SVM 提供了非常高的准确度

    在这里插入图片描述

  • 优点:

    • 适合小样本 高纬度数据 比较强泛化能力
    • 可有效的处理高纬度数据;可使用不同和核函数来适应不同的数据类型
  • 缺点:

    • 计算复杂度高,对于大规模数据处理肯会存在困难
  • 超平面最大间隔

在这里插入图片描述

  • 硬间隔 Hard Margin
    • 如果样本线性可分,在所有样本分类都正确的情况下,寻找最大间隔,这就是硬间隔
    • 如果出现异常值或样本不能线性可分,此时硬间隔无法实现

在这里插入图片描述

  • 软间隔 Soft Margin 和惩罚系数

    • 允许部分样本,在最大间隔之内,甚至在错误的一边,寻找最大间隔,这就是软间隔
    • 目标是尽可能在保持间隔宽度和限制间违例之间找到良好的平衡
    • 通过惩罚系数C来控制职工平衡:C值越小,则间隔越宽,短时间隔违例也会越多
  • 核函数 Kernel

    • 核函数将原始输入空间映射到新的特征空间,使得原本线性不可分的样本在核空间可分

    在这里插入图片描述

支持向量机API的使用

sklearn.svm.LinearSVC(C = 1.0)
  • C: 惩罚系数, 类似于线性回归的正则化系数
  • LinearSVC API 的使用方式:
from sklearn.svm import LinearSVC
mysvc = LinearSVC(C = 30)
mysvc.fit(X_standard,y)
print(mysvc.score(X_standard, y))

代码实现

import numpy as np  # numpy
import matplotlib.pyplot as plt  # 数据可视化
from sklearn import datasets  # 数据集
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler  # 数据预处理
from sklearn.svm import LinearSVC  # 线性SVM
from plot_util import plot_decision_boundary

def demo01():
    '''
    鸢尾花分类
    :return:
    '''
    # 2.加载数据及数据预处理
    # 2.1 加载数据
    X, y = load_iris(return_X_y=True)

    print(y.shape)
    print(X.shape)
    # 2.2 数据降维
    x = X[y < 2, :2]
    y = y[y < 2]
    print(y.shape)

    plt.scatter(x[y == 0, 0], x[y == 0, 1], c='red')
    plt.scatter(x[y == 1, 0], x[y == 1, 1], c='blue')
    plt.show()

    # 2.3 数据预处理,标准化
    transform = StandardScaler
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值