文章目录
一、什么是支持向量机(SVM)
- 机器学习中的SVM(Support Vector Machine,支持向量机)是一种监督学习算法,广泛应用于分类和回归分析中。它的基本思想是通过找到一个最优超平面来最大化不同类别之间的间隔,从而实现对数据的分类。
1、SVM两个基本概念
-
支持向量:支持向量是离超平面最近的那些样本点,它们对于确定超平面的位置和方向至关重要。
-
超平面:在二维空间中,超平面是一条直线;在三维空间中,它是一个平面;在更高维的空间中,它是一个超平面。SVM的目标是找到一个最优超平面,使得不同类别的样本点能够尽可能地被分开,并且这个超平面与最近的样本点(即支持向量)之间的距离最大化。
2、SVM的原理
-
线性可分情况:
- 当数据线性可分时,SVM的目标是找到一个最优超平面,将两个不同类别的样本点完全分开,并且这个超平面与最近的样本点(支持向量)之间的距离最大化。这个距离被称为间隔。
- SVM通过计算样本点到超平面的距离来定义间隔,并尝试最大化这个间隔,从而增强分类器的鲁棒性和泛化能力。
-
非线性可分情况:
- 当数据非线性可分时,SVM引入了核函数的概念。核函数能够将样本从原始特征空间映射到更高维的特征空间,使得数据在新的空间中线性可分。
- 常用的核函数包括线性核、多项式核和高斯核(径向基函数)等。这些核函数允许SVM处理更复杂的非线性分类问题。
二、示例:支持向量机(SVM)实现二分类问题
- 下面是一个含有100个样本,且每个样本都含有4个特征的数据集
- 为了方便获取数据,这个数据集被刻意处理过,前50个样本标签为0,后50个样本标签为1
- 这些样本被分为两个标签类,分别是0和1
- 第一列为每个样本的序列值没有作用,获取数据时要跳过它,最后一列为标签列
- 由于这个数据每个样本都有4个特征,属于四维空间,无法进行可视化展示,所以我们先选取其中的两个特征进行可视化展示和构建模型训练,再通过所有的特征构建模型,并对模型进行评估
1、先选取两个特征,并进行可视化
-
1、获取数据并可视化原始数据
import pandas as pd """获取数据""" data = pd.read_csv('iris.csv', header=None) """可视化原始数据""" import matplotlib.pyplot as plt data1 = data.iloc[:50, :] data2 = data.iloc[50:, :] # 原始数据是四维,无法展示,选择两个特征进行展示 plt.scatter(data1[1], data1[3], marker='+') plt.scat