(一)实验名称: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. LeetCode 1388. Pizza With 3n Slices(3n 块披萨)(DP)

    给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨: 你挑选 任意 一块披萨.Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨.Bob 将会挑选你所选择 ...

  2. C++中左值和右值的区别

    #include <iostream> using namespace std; // 什么是左值和右值 const 可以修饰左值和右值z // 左值:有地址的变量 // 右值:没有地址的 ...

  3. 让查询可以使用 json path

    记录一下最近sv.db的完善 1. 让查询可以使用 json path 有时候我们会存储 json 到 db,也有时会只取json部分数据,或者通过json部分数据进行过滤 所以sv.db 也支持这些 ...

  4. es之增删改查

    查询 index: GET task_results/_search/ 普通查询: {"query":{"bool":{"must":[{& ...

  5. 可重入锁ReentrantLock

    ReentrantLock 重入锁,是实现Lock 接口 的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源重复加锁,即当前线程获取该锁后再次获取不会被阻塞. 要想支持重入 ...

  6. python项目实战——人生重开模拟器

    文章目录 1.菜单栏的编写 2.玩家确定颜值.体质.智力.家境 3.生成性别 4.设定角色出生点 5.各个年龄段的变化 5.1 幼年阶段 5.2 青年阶段 5.3中年阶段 5.4 晚年阶段 6.整体代 ...

  7. Mysql(1)—简介及Windows环境下载安装

    Mysql(1)-简介及Windows环境下载安装 一.关于Mysql 1.1 简介 MySQL是一个流行的关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行操作.MySQL由瑞典 ...

  8. windows宝塔面板请使用正确的入口登录面板问题解决记录

    问题起因:浏览器升级面板的时候,浏览器卡死,导致登录不进,cmd里面修复或者更新依然显示请使用正确的入口登录面板. 解决方法: 先停止宝塔面板,然后将下面这个目录删掉 C:\Program Files ...

  9. JuiceFS CSI:Mount Pod 的平滑升级及其实现原理

    当集群中需要升级 Mount Pod 时,目前推荐的方式是更新配置后重新挂载应用 Pod 进行滚动升级,但这种升级方式的问题在于需要业务重启. 如果对业务的使用模式很清楚时,比如没有数据写入等,也可以 ...

  10. DataGrip 2024.2.2 最新安装教程(附激活-2099年~)

    下载 DataGrip 2024.2.2 版本的安装包. 下载补丁https://pan.quark.cn/s/fcc23ab8cadf 检查 免责声明:本文中的资源均来自互联网,仅供个人学习和交流使 ...