(一)实验名称:SVM(支持向量机)算法实验

(二)实验目的:

  1. 学习支持向量机SVM的基本概念
  2. 了解核函数的基本概念
  3. 掌握使用scikit-learn API函数实现SVM算法

(三)实验内容:使用scikit-learn API中的SVM算法解决非线性分类的问题

(四)实验原理

(五)实验步骤

  1. 建立工程
  2. 数据准备、分析
  3. 模型训练
  4. 模型可视化
  5. 模型预测

相关代码如下

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(支持向量机)算法实验的更多相关文章

  1. SVM 支持向量机算法-实战篇

    公号:码农充电站pro 主页:https://codeshellme.github.io 上一篇介绍了 SVM 的原理和一些基本概念,本篇来介绍如何用 SVM 处理实际问题. 1,SVM 的实现 SV ...

  2. 机器学习(七):梯度下降解决分类问题——perceptron感知机算法与SVM支持向量机算法进行二维点分类

    实验2 感知机算法与支持向量机算法 一.预备知识 1.感知机算法 二.实验目的 掌握感知机算法的原理及设计: 掌握利用感知机算法解决分类问题. 三.实验内容 设计感知机算法求解, 设计SVM算法求解( ...

  3. SVM(支持向量机)算法

    第一步.初步了解SVM 1.0.什么是支持向量机SVM 要明白什么是SVM,便得从分类说起. 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),而支持向 ...

  4. SVM支持向量机算法

    支持向量机(SVM)是另一类的学习系统,其众多的优点使得他成为最流行的算法之一.其不仅有扎实的理论基础,而且在许多应用领域比大多数其他算法更准确.  1.线性支持向量机:可分情况 根据公式(1)< ...

  5. 深入浅出理解SVM支持向量机算法

      支持向量机是Vapnik等人于1995年首先提出的,它是基于VC维理论和结构风险最小化原则的学习机器.它在解决小样本.非线性和高维模式识别问题中表现出许多特有的优势,并在一定程度上克服了" ...

  6. 跟我学算法-svm支持向量机算法推导

    Svm算法又称为支持向量机,是一种有监督的学习分类算法,目的是为了找到两个支持点,用来使得平面到达这两个支持点的距离最近. 通俗的说:找到一条直线,使得离该线最近的点与该线的距离最远. 我使用手写进行 ...

  7. SVM 支持向量机算法介绍

    转自:https://zhuanlan.zhihu.com/p/21932911?refer=baina 参考:http://www.cnblogs.com/LeftNotEasy/archive/2 ...

  8. SVM 支持向量机算法-原理篇

    公号:码农充电站pro 主页:https://codeshellme.github.io 本篇来介绍SVM 算法,它的英文全称是 Support Vector Machine,中文翻译为支持向量机. ...

  9. python机器学习——SVM支持向量机

    背景与原理: 支持向量机是一种用来解决分类问题的算法,其原理大致可理解为:对于所有$n$维的数据点,我们希望能够找到一个$n$维的直线(平面,超平面),使得在这个超平面一侧的点属于同一类,另一侧的点属 ...

  10. 转:机器学习中的算法(2)-支持向量机(SVM)基础

    机器学习中的算法(2)-支持向量机(SVM)基础 转:http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html 版 ...

随机推荐

  1. Ftrace 进阶用法

    1 前言 本文为 Ftrace 系列文章第二篇,描述 Ftrace 进阶用法.上一篇文章中我们接触到了 Ftrace 基本概念,知道了如何 trace 一个函数,知道了如何 enable 一个 tra ...

  2. 【ARMv8】异常级别的定义EL0、EL1、EL2、EL3

    Exception levels ARMv8-A系列定义了一系列的异常等级,从EL0到EL3,下面具体说明其含义: ELn中,随着n的增加,软件的执行权限也相应的增加: EL0被称为无特权执行: EL ...

  3. 直播预告 | YashanDB 2023年度发布会正式定档11月8日,邀您共同见证国产数据库发展实践!

    11月8日,YashanDB 2023年度发布会将于云端直播开启,发布会以 「惟实·励新」 为主题,邀请企业用户.合作伙伴.广大开发者共同见证全新产品与解决方案.届时发布会将在墨天轮社区同步进行,欢迎 ...

  4. DDD实体和对象

    实体 entity 标识符用来唯一定位一个对象,在数据库中我们一般用表的主键来实现标识符,主键和标识符的思考角度不同,就是 id 字段 : 实体:拥有唯一的标识符,标识符的值不会改变,而其他对象的状态 ...

  5. 说一下tcp三次握手

    1. 客户端发送syn请求连接 : 2. 服务器检验syn,然后发送syn和ack确认连接: 3. 客户端接收ack和syn,然后发送ack建立连接 :

  6. rabbitmq 新下载链接🔗

    Linux下安装RabbitMQ需要依赖socat和erlang插件环境 1 插件下载  1.1 RabbitMQ下载 下载地址一:https://www.rabbitmq.com/download. ...

  7. 宏定义define的用法

    #define read(x) scanf("%d",&x); 这行代码是一个宏定义,使用了 C 语言中的 #define 指令.它的作用是定义一个名为 read 的宏,用 ...

  8. Cut the Sequence(单调队列DP+set)

    题面 大意:一段长度为n的序列,分成若干段,每段值的总和不能超过m,求各段中最大值加起来的最小值. 其实最朴素的DP还是很好想的,以f[i]表示i及i以前已经分好所需的最小值,a[i]表示i点的值,那 ...

  9. KubeSphere 社区双周报|2024.02.01-02.29

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  10. 怎样替换 rhel 7.3 的 yum

    [背景] 想在自己安装的虚拟机上搭建一套 git+gitee+vscode 环境(欢迎看下期文章),发现python版本是2.7,这个版本太老 想通过yum进行更新,结果提示需要注册,索性就查查替换y ...