(一)实验名称: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. windows 下搭php环境

    windows 下搭php环境(php7.2+mysql5.7+apache2.4) 1. 先下载需要的软件 1) 先去微软官网下载vc,我下载的是2017版中文简体的.网址为https://www. ...

  2. 对3D图像进行裁剪

    在对医学图像进行深度学习的过程中,我们会遇到图片过大,导致train的过程中网络会瘫痪,所以我们会考虑到对图像进行分割.比如一张155x240x240的图像,我们可以将他分割成一系列128x128x1 ...

  3. 墨天轮沙龙 | 清华乔嘉林:Apache IoTDB,源于清华,建设开源生态之路

    在6月8日举办的[墨天轮数据库沙龙第七期-开源生态专场]中,清华大学博士,助理研究员,Apache IoTDB PMC 乔嘉林老师分享了<Apache IoTDB,源于清华,建设开源生态之路&g ...

  4. iOS工厂模式使用小结

    一.什么是工厂方法? 正式的解释是:在基类中定义创建对象的一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟到子类中进行.工厂方法要解决的问题是对象的创建时机,它提供了一种扩展的策略,很好 ...

  5. html中div加滚动条

    div 加滚动条的两种方法: 一. <div style=" overflow:scroll; width:400px; height:400px;"></div ...

  6. 『玩转Streamlit』--多页应用

    Streamlit不仅让创建单页应用变得易如反掌,更通过一系列创新特性,支持构建多页面应用,极大地丰富了用户体验和数据探索的可能性. 随着我们Streamlit App的功能逐渐增多之后,单个页面展示 ...

  7. Go语言学习 _基础02 _条件表达式、分支、循环

    Go语言学习 _基础02 _条件表达式.分支.循环 条件表达式和switch package condition import "testing" func TestCondict ...

  8. Maven简单介绍——必要的Java管理与构建

    概念 通常Java的项目中有很多的环境和规范的问题,比如一些需要依赖的包,整个项目的目录标准是怎么样的,什么样的文件放在哪个目录等,还有jdk版本,编译代码流程,项目版本号之类的问题. 虽然这些都是小 ...

  9. 4-1 C++运算符基本概念

    目录 4.1.1 基本概念 函数观点 左值和右值 运算符重载 4.1.2 优先级.结合律与求值顺序 优先级和结合律 求值顺序 书中表述 实践表明(猜想) 实践验证 可能的解释:编译器的优化行为 一些运 ...

  10. 3-5&&6 C++数组遍历

    遍历二维数组的三种方式 #include<iostream> #include<string> #include<vector> using namespace s ...