【数据挖掘】SVM原理详解及对iris数据集分类实战(超详细 附源码)

简介: 【数据挖掘】SVM原理详解及对iris数据集分类实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~

支持向量机(Support Vetor Machine,SVM)由Vapnik等人于1995年首先提出,在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并推广到人脸识别、行人检测和文本分类等其他机器学习问题中

SVM建立在统计学习理论的VC维理论和结构风险最小原理基础上,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳平衡,以求获得最好的推广能力。SVM可以用于数值预测和分类

算法原理

支持向量机(Support Vetor Machine,SVM)是一种对线性和非线性数据进行分类的方法。SVM 使用一种非线性映射,把原训练数据映射到较高的维上,在新的维上,搜索最佳分离超平面

由简至繁SVM可分类为三类:线性可分(linear SVM in linearly separable case)的线性SVM、线性不可分的线性SVM、非线性(nonlinear)SVM

SVM可分类为三类:线性可分的线性SVM、线性不可分的线性SVM、非线性SVM。如果训练数据线性可分,则通过硬间隔最大化学习一个线性分类器即线性可分支持向量机,也称为硬间隔支持向量机;如果训练数据近似线性可分,则通过软间隔最大化学习得到一个线性分类器即线性支持向量机,也称为软间隔支持向量机;对于数据非线性可分的情况,通过扩展线性SVM的方法,得到非线性的SVM,即采用非线性映射把输入数据变换到较高维空间,在新的空间搜索分离超平面

1. 数据线性可分的情况

SVM的主要目标是找到最佳超平面,以便在不同类的数据点之间进行正确分类。超平面的维度等于输入特征的数量减去1。图7-5显示了分类的最佳超平面和支持向量(实心的数据样本)

向量到超平面距离公式如下

2.数据非线性可分的情况

在某些情况下,训练数据甚至连近似的线性划分也找不到,线性超平面无法有效划分正类与负类,而是需要超曲面等非线性划分。然而,非线性的优化问题很难求解。通常的做法是将输入向量从输入的空间投射到另一个空间,如图7-6所示。在这个特征空间中,投射后的特征向量线性可分或者近似线性可分,然后通过线性支持向量机的方法求解

然而这样做也带来一个新的问题,即使得投射后的特征向量(近似)线性可分的特征空间维度往往比原输入空间的维度高很多,甚至具有无限个维度。为了解决新特征空间维度高的问题,引入核方法(Kernal Method),在计算中不需要直接进行非线性变换,从而避免由计算高维度向量带来的问题

常用核函数如下图

支持向量机在高维空间中非常高效,即使在数据维度比样本数量大的情况下仍然有效,而且在决策函数中使用了训练集的自己,因此它也是高效利用内存的,但是如果特征数量比样本数量大得多,在选择核函数时就要避免过拟合

SVM算法实战

在sklearn中SVM的算法库分为两类,一类是分类的算法库,包括SVC、NuSVC和LinearSVC 3个类。另一类是回归算法库,包括SVR、NuSVR和LinearSVR 3个类。相关的类都包括在sklearn.svm模块之中

下面利用SV对Iris数据集进行分类

输出结果如下

部分代码如下

import numpy as np
from sklearn import svm
from sklearn import datasets
from sklearn import metrics
from sklearn import model_selection
import matplotlib.pyplot as plt
iris = datasets.load_iris()
x, y = iris.data,iris.target
x_train, x_test, y_train, y_test = model_selection.train_test_split(x, y, random_state = 1, test_size = 0.2)
classifier=svm.SVC(kernel='linear',gamma=0.1,decision_function_shape='ovo',C=0.1)
classifier.fit(x_train, y_train.ravel())
print("SVM-输出训练集的准确率为:", classifier.score(x_train, y_train))
print("SVM-输出测ification_report(y_test,y_hat)
print(classreport)

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】PCA 主成分分析算法过程及原理讲解
主成分分析(PCA)的原理和算法过程。
133 0
|
6月前
|
数据采集 数据可视化 数据挖掘
数据挖掘实战:使用Python进行数据分析与可视化
在大数据时代,Python因其强大库支持和易学性成为数据挖掘的首选语言。本文通过一个电商销售数据案例,演示如何使用Python进行数据预处理(如处理缺失值)、分析(如销售额时间趋势)和可视化(如商品类别销售条形图),揭示数据背后的模式。安装`pandas`, `numpy`, `matplotlib`, `seaborn`后,可以按照提供的代码步骤,从读取CSV到数据探索,体验Python在数据分析中的威力。这只是数据科学的入门,更多高级技术等待发掘。【6月更文挑战第14天】
675 11
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
1647 3
|
6月前
|
人工智能 分布式计算 算法
数据挖掘实战随笔更新清单
这是一系列技术博客的摘要,涵盖了多个主题。包括Elasticsearch实战经验、Maxcompute中的Geohash转换和GPS处理、Python环境配置与管理(如Jupyter、Miniforge、Miniconda)、批量接口调用、多进程CSV图片下载、Excel到Markdown转换、Scikit-learn的异常检测(OC-SVM)和模型总结、人工智能领域的图像分类和识别、文本挖掘算法以及数仓相关的行转列处理。所有文章都在持续更新和补充中。
51 2
|
7月前
|
数据可视化 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
|
7月前
|
算法 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
|
7月前
|
机器学习/深度学习 数据采集 算法
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
|
7月前
|
机器学习/深度学习 算法 数据挖掘
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
|
7月前
|
机器学习/深度学习 算法 搜索推荐
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(上)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例
|
7月前
|
数据采集 算法 搜索推荐
数据挖掘实战:基于KMeans算法对超市客户进行聚类分群
数据挖掘实战:基于KMeans算法对超市客户进行聚类分群
1089 0

热门文章

最新文章