【机器学习】SVM(支持向量机)算法实验
(一)实验名称:SVM(支持向量机)算法实验
(二)实验目的:
- 学习支持向量机SVM的基本概念
- 了解核函数的基本概念
- 掌握使用scikit-learn API函数实现SVM算法
(三)实验内容:使用scikit-learn API中的SVM算法解决非线性分类的问题
(四)实验原理
(五)实验步骤
- 建立工程
- 数据准备、分析
- 模型训练
- 模型可视化
- 模型预测
相关代码如下

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
from sklearn.pipeline import Pipeline
import warnings
warnings.filterwarnings('ignore')
X,y=make_moons(n_samples=100,noise=0.1,random_state=1)
moonAxe=[-1.5,2.5,-1,1.5]
def dispData(x,y,moonAxe):
pos_x0=[x[i,0] for i in range(len(y)) if y[i]==1]
pos_x1=[x[i,1] for i in range(len(y)) if y[i]==1]
neg_x0=[x[i,0] for i in range(len(y)) if y[i]==0]
neg_x1=[x[i,1] for i in range(len(y)) if y[i]==0]
plt.plot(pos_x0,pos_x1,"bo")
plt.plot(neg_x0,neg_x1,"r^")
plt.axis(moonAxe)
plt.xlabel("x")
plt.ylabel("y")
def disPredict(clf,moonAxe):
d0=np.linspace(moonAxe[0],moonAxe[1],200)
d1=np.linspace(moonAxe[2],moonAxe[3],200)
x0,x1=np.meshgrid(d0,d1)
X=np.c_[x0.ravel(),x1.ravel()]
y_pred=clf.predict(X).reshape(x0.shape)
plt.contourf(x0,x1,y_pred,alpha=0.8)
dispData(X,y,moonAxe)
polynomial_svm_clf=Pipeline(
(("multiFeature",PolynomialFeatures(degree=3)),
("NumScale",StandardScaler()),
("SVC",LinearSVC(C=100))
)
)
polynomial_svm_clf.fit(X,y)
disPredict(polynomial_svm_clf,moonAxe)
plt.title("Linear SVM classifies Moons dara")
plt.show()
相关结果的截图


写注释的代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
from sklearn.pipeline import Pipeline
import warnings
warnings.filterwarnings('ignore') # 忽略警告
# 生成半环形数据
X,y=make_moons(n_samples=100,noise=0.1,random_state=1)
moonAxe=[-1.5,2.5,-1,1.5] # moons数据集区间
# 显示数据样本
def dispData(x,y,moonAxe):
pos_x0=[x[i,0] for i in range(len(y)) if y[i]==1]
pos_x1=[x[i,1] for i in range(len(y)) if y[i]==1]
neg_x0=[x[i,0] for i in range(len(y)) if y[i]==0]
neg_x1=[x[i,1] for i in range(len(y)) if y[i]==0]
plt.plot(pos_x0,pos_x1,"bo")
plt.plot(neg_x0,neg_x1,"r^")
plt.axis(moonAxe)
plt.xlabel("x")
plt.ylabel("y")
# 显示决策线
def disPredict(clf,moonAxe):
# 生成区间内的数据
d0=np.linspace(moonAxe[0],moonAxe[1],200)
d1=np.linspace(moonAxe[2],moonAxe[3],200)
x0,x1=np.meshgrid(d0,d1)
X=np.c_[x0.ravel(),x1.ravel()]
# 进行预测并绘制预测结果
y_pred=clf.predict(X).reshape(x0.shape)
plt.contourf(x0,x1,y_pred,alpha=0.8)
# 1.显示样本
dispData(X,y,moonAxe)
# 2.构建模型组合,整个三个函数
polynomial_svm_clf=Pipeline(
(("multiFeature",PolynomialFeatures(degree=3)),
("NumScale",StandardScaler()),
("SVC",LinearSVC(C=100))
)
)
# 3.使用模块组合进行训练
polynomial_svm_clf.fit(X,y)
# 4.显示分类线
disPredict(polynomial_svm_clf,moonAxe)
# 5.设置图标标题
plt.title("Linear SVM classifies Moons dara")
plt.show()
【机器学习】SVM(支持向量机)算法实验的更多相关文章
- SVM 支持向量机算法-实战篇
公号:码农充电站pro 主页:https://codeshellme.github.io 上一篇介绍了 SVM 的原理和一些基本概念,本篇来介绍如何用 SVM 处理实际问题. 1,SVM 的实现 SV ...
- 机器学习(七):梯度下降解决分类问题——perceptron感知机算法与SVM支持向量机算法进行二维点分类
实验2 感知机算法与支持向量机算法 一.预备知识 1.感知机算法 二.实验目的 掌握感知机算法的原理及设计: 掌握利用感知机算法解决分类问题. 三.实验内容 设计感知机算法求解, 设计SVM算法求解( ...
- SVM(支持向量机)算法
第一步.初步了解SVM 1.0.什么是支持向量机SVM 要明白什么是SVM,便得从分类说起. 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),而支持向 ...
- SVM支持向量机算法
支持向量机(SVM)是另一类的学习系统,其众多的优点使得他成为最流行的算法之一.其不仅有扎实的理论基础,而且在许多应用领域比大多数其他算法更准确. 1.线性支持向量机:可分情况 根据公式(1)< ...
- 深入浅出理解SVM支持向量机算法
支持向量机是Vapnik等人于1995年首先提出的,它是基于VC维理论和结构风险最小化原则的学习机器.它在解决小样本.非线性和高维模式识别问题中表现出许多特有的优势,并在一定程度上克服了" ...
- 跟我学算法-svm支持向量机算法推导
Svm算法又称为支持向量机,是一种有监督的学习分类算法,目的是为了找到两个支持点,用来使得平面到达这两个支持点的距离最近. 通俗的说:找到一条直线,使得离该线最近的点与该线的距离最远. 我使用手写进行 ...
- SVM 支持向量机算法介绍
转自:https://zhuanlan.zhihu.com/p/21932911?refer=baina 参考:http://www.cnblogs.com/LeftNotEasy/archive/2 ...
- SVM 支持向量机算法-原理篇
公号:码农充电站pro 主页:https://codeshellme.github.io 本篇来介绍SVM 算法,它的英文全称是 Support Vector Machine,中文翻译为支持向量机. ...
- python机器学习——SVM支持向量机
背景与原理: 支持向量机是一种用来解决分类问题的算法,其原理大致可理解为:对于所有$n$维的数据点,我们希望能够找到一个$n$维的直线(平面,超平面),使得在这个超平面一侧的点属于同一类,另一侧的点属 ...
- 转:机器学习中的算法(2)-支持向量机(SVM)基础
机器学习中的算法(2)-支持向量机(SVM)基础 转:http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html 版 ...
随机推荐
- filter 加 indexOf 方法去重数组
let arr = [1, 2, 3, 4, 3, 2, 3, 4, 6, 7, 6] let unique = (arr) => { console.log(arr) return arr.f ...
- 00 通过 Pytorch 实现 Transformer 框架完整代码
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- WiFi基础(六):天线基础知识
liwen01 2024.10.01 前言 麦克斯韦预言了电磁波的存在,赫兹通过实验证实了麦克斯韦的预言,马可尼基于无线电磁波的原理发明了无线电报系统,从此人类进入无线通信系统时代. 天线是通信系统中 ...
- 59 张高清大图,带你实战入门 KubeSphere DevOps
作者:运维有术星主 KubeSphere 基于 Jenkins 的 DevOps 系统是专为 Kubernetes 中的 CI/CD 工作流设计的,它提供了一站式的解决方案,帮助开发和运维团队用非常简 ...
- 基于 KubeSphere 的运管系统落地实践
作者:任建伟,某知名互联网公司云原生工程师,容器技术信徒,云原生领域的实践者. 背景介绍 在接触容器化之前,我们团队内部的应用一直都是基于虚拟机运管,由开发人员自行维护. 由于面向多开发部门服务,而开 ...
- spring下 -spring整体架构,JdbcTemplate笔记
2,搭建Java Maven项目 我的idea是2024.1.1版本,创建普通Maven项目如下图: 用的jdk8,项目名可以自己改,Archetype选图中的第一个就行,之后点 create. 创建 ...
- [Windows]文件搜索利器Everything(附zip)
前言 写代码过程中,老大突然发一条信息 老大:这周周报发一下. 我:好的. 然后我就 显示桌面 打开-我的电脑 找到E盘,找到周报文件夹 寻找到所有周报中今天的周报 复制发送 当我用上Everythi ...
- 鸿蒙Navigation页面生命周期
Navigation作为路由容器,其生命周期承载在NavDestination组件上,以组件事件的形式开放.其生命周期大致可分为三类,自定义组件生命周期.通用组件生命周期和自有生命周期.其中,abou ...
- 解决MindSpore-2.4-GPU版本的安装问题
问题背景 虽说在MindSpore-2.3之后的版本中不在正式的发行版中支持GPU硬件后端,但其实在开发分支版本中对GPU后端是有支持的: 但是在安装的过程中可能会遇到一些问题或者报错,这里复现一下我 ...
- 2023NOIP A层联测26 T2 competition
2023NOIP A层联测26 T2 competition tjm 的做法,很抽象. 考场思路 考虑每道题被做过多少次肯定不现实,那么考虑每一道题有多少次没有做出来. 假设某一次可以做出来题 \(x ...