数学之路(3)-机器学习(3)-机器学习算法-SVM[7]

 

SVM是新近出现的强大的数据挖掘工具,它在文本分类、手写文字识别、图像分类、生物序列分析等实际应用中表现出非常好的性能。SVM属于监督学习算法,样本以属性向量的形式提供,所以输入空间是Rn的子集。

图1

如图1所示,SVM的目标是找到两个间距尽可能大的边界平面来把样本本点分开,以”最小化泛化误差“,即对新的样本点进行分类预测时,出错的几率最小。落在边界平面上的点称为支持向量。Vapnik证明如果可以找到一个较小的支持向量集,就可以保证得到很好的泛化能力----也就是说支持向量的个数越少越好。

数据点通常在输入空间是线性不可分的,我们把它映射到更高维的特征空间,使其线性可分----这里的映射函数我们称之为核函数。特征空间的超平面对应输入空间的一个非线性的分离曲面,因此称为非线性分离器。

线性SVM分类器的输出是u=w*x-b。w是分类平面的法矢,x是输入向量,b是常量,u代表分类。即SVM的目的就是计算出w和b。最大化margin(两个分类平面之间的距离)等价于求下面的二次优化问题:

 

对于非线性分类器就要把x映射到特征空间,同时考虑误差ε的存在(即有些样本点会越过分类边界),上述优化问题变为:

 

从输入空间是映射到特征空间的函数称为核函数,LibSVM中使用的默认核函数是RBF(径向基函数radial basis function),即

 

这样一来就有两个参数需要用户指定:cgamma

 

我们先安装python的机器学习库

http://sourceforge.net/projects/mlpy/

该学习库有以下3个核函数

1、‘linear’ (uT*v)

2、‘poly’ ((gamma*uT*v +coef0)^degree)

3、‘rbf’ (exp(-gamma*|u-v|^2)), ‘sigmoid’ (tanh(gamma*uT*v + coef0))
其中degree为 [int (for ‘poly’ kernel_type)] degree in kernel

下载并安装后,调用 其中的SVM模块对下面的数据进行训练,这次训练我们使用线性核做为SVM的核函数

 

x = [[1,8],[3,20],[1,15],[3,35],[5,35],[4,40],[7,80],[6,49]]
y=[1,1,0,0,1,0,0,1]
showpoint=['ro','bo']
tshowpoint=['r*','b*']
x=np.array(x)
y=np.array(y)
svm = mlpy.LibSvm()
svm.learn(x, y)



本博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/


然后生成随机的未知样本测试数据验证生成的SVM模型 ,星号表示未知样本

 

 

#未知样本分类
tlp_x1=np.random.rand(50)*(xmax-xmin)+xmin
tlp_x2=np.random.rand(50)*(ymax-ymin)+xmin
tlp_x=np.array(zip(tlp_x1,tlp_x2))
for ii in xrange(0,len(tlp_x)):ty=svm.pred(tlp_x[ii])if ty>0:plt.plot(tlp_x1[ii],tlp_x2[ii], tshowpoint[int(ty)])else:plt.plot(tlp_x1[ii],tlp_x2[ii], tshowpoint[int(ty)]) 

>>> runfile(r'K:\book_prog\mplsvm1.py', wdir=r'K:\book_prog')
http://blog.csdn.net/myhaspl
myhaspl@qq.com


loading  ...
>>> 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dalvik指令备忘

跳转指令 if-eq vx, vy, 目标 如果vx vy注2&#xff0c;跳转到目标。if-ne vx,vy, 目标 如果vx ! vy注2&#xff0c;跳转到目标。 if-lt vx,vy, 目标 如果vx < vy注2&#xff0c;跳转到目标。 if-ge vx, vy, 目标 如果vx > vy注2&#xff0c;跳转到目标。 if-gt vx,vy, …

CPU、GPU、FPGA、ASIC等AI芯片特性及对比

1、前言 目前&#xff0c;智能驾驶领域在处理深度学习AI算法方面&#xff0c;主要采用GPU、FPGA 等适合并行计算的通用芯片来实现加速。同时有部分芯片企业开始设计专门用于AI算法的ASIC专用芯片&#xff0c;比如谷歌TPU、地平线BPU等。在智能驾驶产业应用没有大规模兴起和批量…

个人博客03

昨天编写登录界面、注册界面的代码。 今天依旧做这些。 遇到的问题为数据库连接不上。转载于:https://www.cnblogs.com/qilin20/p/8068555.html

人工智能Ai芯片层出不穷,GPU、FPGA、ASIC用于人工智能的优势和劣势对比

人工智能&#xff08;AI&#xff09;主要包括三大要素&#xff0c;分别是数据、算法和算力。其中数据是基础&#xff0c;正是因为在实际应用当中的数据量越来越大&#xff0c;使得传统计算方式和硬件难以满足要求&#xff0c;才催生了AI应用的落地。而算法是连接软件、数据、应…

dom和bom

先看几个两个例题&#xff1a; 星座对应日期&#xff1a; <select id"s1">   <option>a</option>   <option>b</option>   <option>c</option>   <option>d</option>   </select>   <se…

分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)

自己在google code中开源了自己一直以来做的两个自动化的框架&#xff0c;一个是针对QTP的一个是针对Selenium的&#xff0c;显而易见&#xff0c;一个是商业的UI automation工具&#xff0c;一个是开源的自动化工具。 只是代码&#xff0c;可能你直接看的话&#xff0c;有点不…

全景视频拼接关键技术

一、原理介绍 图像拼接(Image Stitching)是一种利用实景图像组成全景空间的技术&#xff0c;它将多幅图像拼接成一幅大尺度图像或360度全景图&#xff0c;图像拼接技术涉及到计算机视觉、计算机图形学、数字图像处理以及一些数学工具等技术。图像拼接其基本步骤主要包括以下几…

Part8 多态性 8.1运算符重载

1运算符重载的规则C 几乎可以重载全部的运算符&#xff0c;而且只能够重载C中已经有的。不能重载的运算符&#xff1a;“.”、“.*”、“::”、“?:”重载之后运算符的优先级和结合性都不会改变。 重载的两种形式&#xff1a;   1 重载为类的非静态成员函数&#xff1b;   …

H面试程序(29):求最大递增数

要求&#xff1a;求最大递增数 如&#xff1a;1231123451 输出12345 #include<stdio.h> #include<assert.h> void find(char *s) {int maxleng 0;int length 1;int pos 0;int i 0;while(s[i] !\0){ if((s[i])<0||(s[i]>9)){assert(0);}if((s[i1]-0) &g…

reorder-list

/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*///思路:通过不同的首结点获取到不同的尾结点,然后拼接public class Solution {public ListNode get…

四大主流芯片架构(X86、ARM、RISC-V和MIPS)

目前市场上主流的芯片架构有 X86、ARM、RISC-V和MIPS四种&#xff1a; 序号架构特点代表性的厂商运营机构发明时间1X86性能高&#xff0c;速度快&#xff0c;兼容性好英特尔&#xff0c;AMD英特尔1978年2ARM成本低&#xff0c;低功耗苹果&#xff0c;谷歌&#xff0c;IBM&…

微博预计要火一阵的SleepSort之Shell及C实现

今日在微博看到如此奇妙的代码。竟然还有新的sort算法&#xff0c;对于我这样的渣渣必须研究一下&#xff0c;代码例如以下&#xff1a; #!/bin.bash function f() {sleep "$1" //sleep 这么多secho "$1" }while [ -n "$1" ] //第一个參数不为空…

相关类以及常用方法

1、system&#xff1a;(系统相关类&#xff09; 常用方法&#xff1a; a) : system.arraycopy(制定数组&#xff0c;开始复制的位置&#xff0c;目标数组&#xff0c;开始粘贴的位置&#xff0c;需要复制的长度) 。 将指定源数组中的数组从指定位置复制到目标数组的指定位…

2021-11-15

本文将重点围绕国产CPU的发展历程与当前产业链各领军企业的布局情况作详尽解读&#xff08;并包含特大号独家整理的最新进展&#xff09;&#xff0c;具体如下&#xff1a; 1、国产CPU发展历程回溯 2、飞腾&#xff1a;PK生态的主导者 3、鲲鹏&#xff1a;快速崛起的领导者 …

关于在ubuntu下配置AMD显卡驱动的总结

同样先卸载先前版本 代码:sudo sh /usr/share/ati/fglrx-uninstall.sh代码:sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*重启 代码:sudo reboot下载驱动&#xff0c;右边直接有ubuntu32位和64位驱动链接&#xff1a;http://support.amd.com/en-us/do…

Python3中的hasattr()

Python3已经将此内置函数移除了。查阅Python v3.0 documentation发现可以使用 hasattr(object, name)内置函数来完成callable的功能&#xff0c;方式如下&#xff1a; 3.0之前&#xff1a;callable(func) 3.0之后&#xff1a;hasattr(func, __call__) 这两者结果是相同的。 转载…

计算机结构简图

北桥,南桥是主板上芯片组中最重要的两块了.它们都是总线控制器.他们是总线控制芯片.相对的来讲,北桥要比南桥更加重要.北桥连接系统总线,担负着cpu访问内存的重任.同时连接这AGP插口,控制PCI总线,割断了系统总线和局部总线,在这一段上速度是最快的.南桥不和CPU连接通常用来作I/…

原始Ajax

var $ { request:function(obj){ //1. 获得xmlhttprequest对象兼容性处理 var xhr; //undefined未定义 try{ //主流浏览器里面的ajax对象 xhr new XMLHttpRequest(); }catch(e){ //IE低版本的浏览器 xhr new ActiveXObject("Microsoft.XMLHTTP"); } //2. 建立和…

Servlet 与 Ajax 交互一直报status=parsererror

Servlet 与 Ajax 交互一直报statusparsererror 原因&#xff1a;servlet 返回的数据不是 Json 格式 1、JS代码为&#xff1a; 1 var jsonStr {clusterNum:2,iterationNum:3,runTimes:4};2 $.ajax({3 type: "post",4 //http://172.2…

25LINQ拾遗及实例

投影 □ 遍历数组索引&#xff0c;Select获取 int[] indexes {0, 2}; string[] strs {"a", "b", "c", "d"}; var result from i in indexes select strs[i]; foreach (string str in result) { Console.Write(str " &quo…