支持向量机(二)

简介: 这是一个关于支持向量机(SVM)的实践教程概要。作者使用Python的sklearn库演示了SVM的步骤,包括导入库、构建数据集、训练线性SVM模型、查看模型参数、进行预测及可视化决策边界。讨论了SVM在处理线性不可分数据时使用核函数(如高斯核)的重要性,并总结了SVM的优缺点:它擅长处理高维和非线性问题,但对大规模数据和参数选择敏感,训练时间可能较长。

支持向量机(一)+https://developer.aliyun.com/article/1544107?spm=a2c6h.13148508.setting.15.1fa24f0ewU5jCe


Demo实践 我们利用sklearn直接调用 SVM函数进行实践尝试


库函数导入


import numpy as np 
 
## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns
 
## 导入逻辑回归模型函数
from sklearn  import svm


 构建数据集并进行模型训练


x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])
 
## 调用SVC模型 (支持向量机分类)
svc = svm.SVC(kernel='linear')
 
## 用SVM模型拟合构造的数据集
svc = svc.fit(x_fearures, y_label)


模型参数查看


svc.coef_
svc.intercept_
 
# [0.33364706 0.33270588]
# [-0.00031373]


 模型预测


y_train_pred = svc.predict(x_fearures)
y_train_pred
 
# [0 0 0 1 1 1]


可视化


x_range = np.linspace(-3, 3)
 
w = svc.coef_[0]
a = -w[0] / w[1]
y_3 = a*x_range - (svc.intercept_[0]) / w[1]
 
# 可视化决策边界
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.plot(x_range, y_3, '-c')
plt.show()

当存在线性不可分的场景时,我们需要使用核函数来提高训练样本的维度、或者将训练样本投向高维。


高斯核(RBF):一般是通过将样本投射到无限维空间,使得原来不可分的数据变得可分。


SVM 默认使用 RBF 核函数,将低维空间样本投射到高维空间。


支持向量机的总结:


优点:


  1. 可以解决高维数据问题,因为支持向量机通过核函数将原始数据映射到高维空间。


  1. 对非线性问题具有较好的处理能力,通过引入核函数,支持向量机可以处理非线性可分的数据。


  1. 鲁棒性较好,支持向量机只关心距离超平面最近的支持向量,对其他数据不敏感,因此对噪声数据具有较强的抗干扰能力。


缺点:


  1. 对于大规模数据集,支持向量机的训练时间较长,因为需要求解一个二次规划问题。


  1. 对参数和核函数的选择敏感,不同的参数和核函数可能导致模型性能差异较大,需要进行参数调优。


  1. 对于线性不可分的数据,需要引入核函数,但选择合适的核函数并不容易。


支持向量机是一种强大的机器学习算法,具有广泛的应用前景。在实际应用中,需要根据具体问题选择合适的核函数和参数,以达到最佳的预测性能。


相关文章
|
6月前
|
机器学习/深度学习 算法 Serverless
什么是支持向量机(SVM)
支持向量机(Support Vector Machine,SVM)是一种用于分类问题的监督算法。主要用于二分类和多分类问题。其基本思想是找到一个超平面,能够将不同类别的样本点尽可能地分开,并使得离超平面最近的样本点尽可能远离超平面,从而实现较好的分类效果。 SVM的关键是找到一个最优的超平面,这个超平面可以通过使得最靠近超平面的样本点之间的间隔最大化来定义。这些最靠近超平面的样本点被称为支持向量。SVM的优化目标可以表示为一个凸二次规划问题,可以通过求解对应的拉格朗日函数来得到最优解。
|
6月前
|
机器学习/深度学习 算法 Serverless
支持向量机(SVM)
支持向量机(Support Vector Machine,SVM)是一种用于分类问题的监督算法。主要用于二分类和多分类问题。其基本思想是找到一个超平面,能够将不同类别的样本点尽可能地分开,并使得离超平面最近的样本点尽可能远离超平面,从而实现较好的分类效果。 SVM的关键是找到一个最优的超平面,这个超平面可以通过使得最靠近超平面的样本点之间的间隔最大化来定义。这些最靠近超平面的样本点被称为支持向量。SVM的优化目标可以表示为一个凸二次规划问题,可以通过求解对应的拉格朗日函数来得到最优解。 SVM除了能够处理线性可分离的问题外,还可以通过核函数的引入处理线性不可分的问题,将样本映射到高维空间,从而
|
5月前
|
机器学习/深度学习 存储 缓存
支持向量机算法
支持向量机算法
75 2
|
5月前
|
机器学习/深度学习 算法 数据挖掘
支持向量机(一)
**支持向量机(SVM)** 是一种优雅的分类和回归算法,广泛应用于文本分类、图像识别、生物信息学和金融预测。它寻找最大化类别间边距的决策边界,适应小样本、高维和非线性问题。SVM通过核函数(如RBF)处理非线性数据,目标是找到具有最大边距的超平面,以提高泛化能力。C参数调节模型复杂度,允许数据点偏离边界的程度。
|
6月前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
|
6月前
|
机器学习/深度学习 数据采集 存储
基于支持向量机的手写数字识别
基于支持向量机的手写数字识别
|
机器学习/深度学习 数据采集 算法
支持向量机SVM:从数学原理到实际应用
支持向量机SVM:从数学原理到实际应用
579 0
|
机器学习/深度学习 算法 Python
2022-11-10-支持向量机SVM
2022-11-10-支持向量机SVM
113 0
|
机器学习/深度学习
SVM(三):非线性支持向量机
SVM(三):非线性支持向量机
SVM(三):非线性支持向量机
|
机器学习/深度学习 算法
SVM(一):线性支持向量机
SVM(一):线性支持向量机
SVM(一):线性支持向量机