支持向量机python实例_Python机器学习SVM简单应用实例 | kTWO-个人博客

1、前言

在上一篇理论性的文章中我们说过了,SVM是分线性可分和线性不可分两种情况的,线性可分的比较容易理解,比较容易一些,线性不可分的就稍微复杂一点了。我们测试就分别用线性可分和线性不可分两种情况分别测试Python中的SVM算法。

Python中已经封装了SVM的算法在sklearn的库中,若不知道sklearn是啥我想你可能是没有看前面的基础课程,建议去了解一下sklearn。

本篇文章只讲线性可分的情况,下一篇文章讲线性不可分的情况,使用图片识别做例子。

2、线性可分的SVM应用测试

(1)简单的预测

测试数据我们给出三个点:(2,0)(1,1)(2,3)。

前两个点我们分为一类,第三个点事另一类可以记为(0,0,1)。

看代码:

#coding:utf8

#导入svm的库

from sklearn import svm

x = [[2, 0], [1, 1], [2, 3]]

y = [0, 0, 1]  #对应x的分类标记

clf = svm.SVC(kernel= 'linear') #线性核函数

clf.fit(x, y)

print clf

print clf.support_vectors_  #支持向量

print clf.support_  #支持向量是哪几个(下标)

print clf.n_support_    #每一类中有几个支持向量

print clf.predict([0, 1])   #测试数据

1

2

3

4

5

6

7

8

9

10

11

12

13

#coding:utf8

#导入svm的库

from sklearn import svm

x = [[2, 0], [1, 1], [2, 3]]

y = [0, 0, 1]  #对应x的分类标记

clf = svm.SVC(kernel= 'linear') #线性核函数

clf.fit(x, y)

print clf

print clf.support_vectors_  #支持向量

print clf.support_  #支持向量是哪几个(下标)

print clf.n_support_    #每一类中有几个支持向量

print clf.predict([0, 1])   #测试数据

上面的代码非常简单就不用讲了,注释写的很清楚。

(2)复杂一些的预测

下面我们做一个复杂点的例子,我们来随机生成两类点,进行SVM的建模然后我们在画布中画出这个模型图。

训练集:随机生成正太分布的点,20个小于0的 20个大于0的数。

代码如下:

#######################复杂的测试###############################

print "########################################\n"

import numpy as np

import pylab as pl

#生成随机点数据集

np.random.seed(0) #固定随机值

x = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]

y = [0] *20 +[1] * 20

print x

print y

clf2 = svm.SVC(kernel='linear')

clf2.fit(x, y)

print clf2.support_

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#######################复杂的测试###############################

print "########################################\n"

import numpy as np

import pylab as pl

#生成随机点数据集

np.random.seed(0) #固定随机值

x = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]

y = [0] *20 +[1] * 20

print x

print y

clf2 = svm.SVC(kernel='linear')

clf2.fit(x, y)

print clf2.support_

模型已经建完,了我们下面就画出这个模型的二维形状。这里我们使用了一个绘图的库叫pylab。

绘图很简单,只要知道点的坐标就可以绘制出点,只要知道多个点的坐标连接起来就可以构成线。

不过这里注意一下,有个计算斜率和截距的公式,看代码吧。

#画出散点图

#画出支持向量的点,参数:x,y,大小

pl.scatter(clf2.support_vectors_[:, 0],clf2.support_vectors_[:, 1],s=80)

#画出全部的点,参数:x,y,颜色,colormap,形状

pl.scatter(x[:, 0],x[:, 1],c=y,cmap=pl.cm.Paired,marker='o')

pl.axis('tight')

#pl.savefig("dd") 保存绘图

pl.show()

1

2

3

4

5

6

7

8

9

#画出散点图

#画出支持向量的点,参数:x,y,大小

pl.scatter(clf2.support_vectors_[:, 0],clf2.support_vectors_[:, 1],s=80)

#画出全部的点,参数:x,y,颜色,colormap,形状

pl.scatter(x[:, 0],x[:, 1],c=y,cmap=pl.cm.Paired,marker='o')

pl.axis('tight')

#pl.savefig("dd") 保存绘图

pl.show()

最终的绘制结果如下:

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

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

相关文章

dbscan java_DBSCAN算法的Java,C++,Python实现

最近由于要实现‘基于网格的DBSCAN算法’,网上有没有找到现成的代码[如果您有代码,麻烦联系我],只好参考已有的DBSCAN算法的实现。先从网上随便找了几篇放这儿,之后对比研究。DBSCAN简介:1.简介DBSCAN 算法是一种基于密…

python云计算主要是干嘛的_国内python 云计算是干什么的

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

python画pr曲线代码_Yolov3测试图及绘制PR曲线,yoloV3,map,和,画

训练指令:./darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 | tee train_yolov3.logps:For training with mAP (mean average precisions) calculation for each 4 Epochs (set validvalid.txt or train.txt in obj.data fil…

xampp 支持pdo mysql_在Windows上安装PHP PDO(xampp)

我正在尝试开发一个可以在PHP上连接到尽可能多的不同数据库的Web应用程序. PDO(http://www.php.net/manual/en/book.pdo.php)似乎是正确的界面,但我无法安装所需要的所有不同PDO数据库驱动程序所需的扩展.请注意,我在Windows 7机器上使用xampp. PHP版本5.3.8. PDO驱动启用了Mys…

python常用的库有哪些餐厅_这十个Python常用库,学习Python的你必须要知道!

想知道Python取得如此巨大成功的原因吗?只要看看Python提供的大量库就知道了包括原生库和第三方库。不过,有这么多Python库,有些库得不到应有的关注也就不足为奇了。此外,只在一个领域里的工作的人并不知道另一个领域里有什么好东…

java将图片转byte存入数据库_Java将byte[]转图片存储到本地的案例

Java中,将字节数组转成图片的有很多种方式,今天在这里记录其中一种,方便以后查询,也可以提供给没有接触的童鞋做一个参考。首先是将图片转成字节数组import sun.misc.BASE64Encoder;import java.io.*;// 传入图片路径,…

python高阶函数看不懂_Python进阶:高阶函数的详细说明

这篇文章讲述了Python进阶:高阶函数的详细说明有需要的朋友可以参考函数式编程函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称…

java callable接口_Java多线程之Callable接口的实现有返回值的线程

import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;//在主线程获取callable线程返回值时,如果callable线程还存在线程没有执行完,则主线程…

python聊天软件实现_python实现点对点聊天程序

用Python实现点对点的聊天,2个程序,一个是client.py,一个是server.py,通过本机地址127.0.0.1连接进行通信,利用多线程把发送消息和接收消息分开独立进行。client代码:import socketimport sysimport thread…

java编译器代码检查_Java编译器可以优化此代码吗?

我拥有的Java 8编译器似乎并没有对其进行优化.编译后使用“ javap -c”检查字节码:public static void main(java.lang.String[]);Code:0: new #2 // class java/util/Random3: dup4: invokespecial #3 // Method java/util/Random."":()V7: invokevirtua…

python中rgb_python - 图像的RGB矩阵

Taking an image as input, how can I get the rgb matrix corresponding to it?I checked out the numpy.asarray function. Does that give me the rgb matrix or some other matrix?解决方案The simplest answer is to use the NumPy and SciPy wrappers around PIL. Ther…

java volatile lock_Java并发学习笔记 -- Java中的Lock、volatile、同步关键字

Java并发一、锁1. 偏向锁1. 思想背景来源:HotSpot的作者经过研究发现,大多数情况下,锁不仅不存在多线程竞争,而且总是由同 一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。原理:在对象头和栈帧…

python 数组赋值_pythonamp;numpy的赋值

有点编程基础的童鞋看到这个标题可能会有点懵逼,这还是个问题吗?不就是个等号()解决问题嘛!我也希望是如此简单,因为上个星期被这个问题折磨到崩溃!一般的python程序需要赋值时的确是通过等号()实现的,不管…

java字符串匹配dp_[OI]字符串DP小结

顾名又思义,是在字符串上进行的DP操作。因为字符串本身可以看作是一个序列,所以有些时候字符串DP可以用区间DP来解决。P2246 SAC#1 - Hello World(升级版)题目描述在讲义的某一面,他看见了一篇文章。这篇文章由英文字母(大小写均有)、数字、和…

python打包成exe导入文件_【转载】将python脚本打包成exe文件

标签:exe文件也就是可以直接执行的文件。通常我们编好的带py后缀的脚本文件都是需要在有python的环境下执行,每次通过Win R打开运行窗口再输入powershell打开控制台,再千辛万苦地cd c:\python27 (change directory)转换目录到py文件的目录下。最终还是要…

java线上问题定位_java定位线上问题

3、jstack: Java 提供的命令。可以查看某个进程的当前线程栈运行情况。根据 这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及 是否死锁等等......A、//int a,b,c B、/** int a,b ,c */ C、{int a,b,c} */ D、/* int a,b String a */ 30、Java 目前支持…

python排名上升_TIOBE:2019年7月全球编程语言排行 Python热度继续上升

与上个月相比,Python 的指数又增加了不少,由 8.530% 上升到 9.260%。我们还留意到,TIOBE 对这期榜单的标题描述是“Perl is one of the victims of Python’s hype”,大意是说Perl 成为了过度炒作 Python 的受害者之一。TIOBE 认为…

java界面化二叉排序树_105-线索化二叉树代码实现2

2.网上数据结构和算法的课程不少,但存在两个问题:1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上…

python截图识别文字代码_10几行代码,用python打造实时截图识别OCR

你一定用过那种“OCR神器”,可以把图片中的文字提取出来,极大的提高工作效率。今天,我们就来做一款实时截图识别的小工具。顾名思义,运行程序时,可以实时的把你截出来的图片中的文字识别出来。、!下次&…

我的世界java 内存_我的世界如何分配内存

如果你在运行Minecraft时出现内存错误等问题,你可能需要给Minecraft分配更多内存来解决运行故障。如果你玩的是新版本的Minecraft,那么你可以从启动器里直接分配内存(RAM)。如果你使用的是旧版本,那么你需要创建一些文件来改变Minecraft内存使…