python支持向量机分类器怎么用_可视化SVM分类器开源实现的python代码
如下的Python代码是可视化SVM分类器开源实现的python代码。这是个小巧又简单,却不一定满足大家高效要求的具有可视化功能的SVM分类器源码。是采用标准python写成的,但如果需要作图功能,则需要安装matplotlib,否则注释相应代码即可。
在这里推荐安装enthought python来应用。
可视化SVM分类器开源实现的python代码如下:
import sys,math,plot
# -------get current tolerance level-------
def tolerance(v1,v2,norm):
sum = 0.0
for k in v1.keys()+v2.keys():
t1 = 0
t2 = 0
if k in v1:
t1 = v1[k]
if k in v2:
t2 = v2[k]
sum += (t1-t2) * (t1 - t2)
return math.sqrt(sum/norm)
#------fill dense alpha list with initial values
def init_alpha(num_examples):
alpha_s = []
for i in range(num_examples):
alpha_s.append((0.0,i))
return alpha_s
#------dot products for two dict format vectors
def dot(v1,v2):
sum = 0.0
if len(v1) < len(v2):
for id in v1.keys():
if id in v2:
sum += v1[id] * v2[id]
else:
for id in v2.keys():
if id in v1:
sum += v1[id] * v2[id]
return sum
#------------kernel evaluation for two vectors
def kernel(v1, v2):
return dot(v1,v2)
#www.iplaypy.com
# build lower triangular kernel matrix compute_Q
def compute_Q(es,height):
q = []
for i in range(height):
q.append([])
for j in range(height):
if i>=j:
q[i].append(kernel(es[i],es[j]))
return q
# retrieve kernel matrix element on i,j
def ret_Q(q,i,j):
if i>=j:
return q[i][j]
else:
return q[j][i]
def read_examples(stream):
es = []
cs = []
width = 0
height = 0
for line in stream:
e = {}
c = float(line[0:line.find(" ")])
for t in line[line.find(" ")+1:].split():
ts = t.split(":")
id = int(ts[0])
e[id] = float(ts[1])
if id > width:
width = id
es.append(e)
cs.append(c)
height += 1
return height, width, cs,es
def main(C=1.0, max_iter=100, tol = 0.001, show_plot=False):
alpha_sparse = {} # current sparse alpha list
alpha_s_prim = {} # previous sparse alpha list
print >> sys.stderr, "loading examples..."
height_e, width_e, cs,es = read_examples(sys.stdin)
print >> sys.stderr, "example matrix: " , height_e, ",", width_e
print >> sys.stderr, "kernelizing..."
q = compute_Q(es,height_e)
alpha_s = init_alpha(height_e)
bias = 0
# stochastic gradient descent
for i in range(max_iter):
print >> sys.stderr, "¥nnew iteration:", i+1
gamma = 1
# sort alpha list in reversed order
alpha_s.sort(None, None, True)
print >> sys.stderr, alpha_s[0:30]
print >> sys.stderr, 'sparsity: ', len(alpha_sparse),':',height
2000
_e
alpha_s_prim = alpha_sparse.copy()
z_max = float("-infinity"); z_min= float("infinity")
for id in range(len(alpha_s)):
# update from the largest alpha
alpha = alpha_s[id][0]
j = alpha_s[id][1]
t = 0.0
for k in alpha_sparse.keys():
t += cs[k]* alpha_sparse[k] * ret_Q(q,j,k)
# check z_max and z_min for bias computation
if cs[j]>0:
if t < z_min:
z_min = t
else:
if t > z_max:
z_max = t
learning_rate = gamma * (1/ret_Q(q,j,j))
delta = learning_rate * ( 1 - t * cs[j] )
# check for soft-margin
alpha += delta
if alpha < 0 :
alpha = 0.0
if alpha > C:
alpha = C
# do update foe dense alpha list
alpha_s[id] = alpha,j
# do update for sparse alpha list
if math.fabs(alpha - 0.0) >= 1e-10:
alpha_sparse[j]=alpha
else:
if j in alpha_sparse:
del alpha_sparse[j]
# get bias
bias = (z_max+z_min)/2.0
# chekc for tolerance
tol1 = tolerance(alpha_sparse, alpha_s_prim, float(height_e))
print >> sys.stderr, "tolerance:", tol1
if tol1 < tol:
print >> sys.stderr, "¥nfinished in",i+1,"iterations"
break
svm_res ={'sv_s':[],'id_s':[],'alpha_s':[]}
# support vectors
for id,alpha in alpha_sparse.items():
svm_res['sv_s'].append(es[id])
svm_res['id_s'].append(id)
svm_res['alpha_s'].append(cs[id]*alpha)
svm_res['bias'] = bias
# plot graph if needed
if show_plot:
plot.draw(cs, es, svm_res)
return svm_res
if __name__ == "__main__":
t= main()
print 'support vectors:', t['sv_s']
print 'example IDs:', t['id_s']
print 'lagrange multipliers:',t['alpha_s']
print 'bias:', t['bias']
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/graphics/gr2477.html
相关文章 Recommend
python支持向量机分类器怎么用_可视化SVM分类器开源实现的python代码相关推荐
- python打印特殊符号_python plt可视化——打印特殊符号和制作图例代码
1.打印特殊符号 matplotlib在公式书写上面跟latex很相似,接下来我们就特殊符号,上标下标来具体展示一下.import matplotlib.pyplot as plt x = [i+1 ...
- python 数组合并排重_并排深度学习:Julia vs Python
python 数组合并排重 Julia could possibly be the biggest threat to Python. For a variety of applications, J ...
- python最好用的助手_推荐5款好用的Python工具
这篇文章的内容是给大家推荐了5款好用的Python工具,有需要的朋友可以看一看 摘要:推荐5个酷毙的Python工具 工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足 ...
- python入门教程傻瓜版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...
随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...
- python模块cv2人脸识别_手把手教你使用OpenCV,Python和深度学习进行人脸识别
使用OpenCV,Python和深度学习进行人脸识别 在本教程中,你将学习如何使用OpenCV,Python和深度学习进行面部识别.首先,我们将简要讨论基于深度学习的面部识别,包括"深度度量 ...
- python难度大的题_早看少被坑!Python 最难的问题
超过十年以上,没有比解释器全局锁(GIL)让Python新手和专家更有挫折感或者更有好奇心. 未解决的问题 随处都是问题.难度大.耗时多肯定是其中一个问题.仅仅是尝试解决这个问题就会让人惊讶.之前是整 ...
- python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?
对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...
- python手机端编程环境_移动端自动化测试解决方案(Appium + Python) - (1) 环境搭建...
最近对iOS自动化测试做了一番探究,希望通过自动化测试更好的去提高公司项目的测试效率 .在网上找了很多的文章和相关资料,都因为时间比较久导致无法实现基本环境的搭建,我在这儿分享给大家分享我的实现过程. ...
- python有什么用处案例_为什么大家都推荐你学python?看完这5个例子就明白了!...
为什么大家都推荐你学Python?而不是C语言或者是JAVA呢? 因为-- python很灵活,一定程度上函数也可以传参和注入,所以代码的灵活性要大的多. python自带了函数的curry化以及迟滞 ...
最新文章
- 数学知识--Methods for Non-Linear Least Squares Problems(第二章)
- 51单片机的配p10端口c语言,stc12c5a16s2的单片机的p5口做普通端口怎么定义?
- MongoDB 的高级查询 aggregate 聚合管道
- 为什么二级菜单会被挡住_父页面弹出菜单被子页面挡住问题
- windows环境的python的环境变量_win的环境变量配置(Python实例)
- webuploader插件使用分析
- java插件化设计开发
- mac版本 sadptool_海康 设备 发现(SADPTool原理)
- ppt模板免费下载的网站有哪些?这个宝藏网站必须make
- 2022最新软考考试时间已公布
- 【笔记】FFC 20624 Winter 09的mil与mm显示转换
- 关于NVIDIA显卡驱动更新后,没有NVIDIA 控制面板的解决办法
- 罗马数字序号与word2013中如何插入
- Swift游戏实战-跑酷熊猫 09 移除场景之外的平台
- 微软官网操作系统下载方法
- cmaq实践学习-飓风案例运行bcon icon mcip cctm脚本修改运行
- pyPDF2或pyPDF4做pdf页面提取出错
- 人工智能html5背景,HTML5人工智能基础及实践
- 用while循环写四叶玫瑰数(自幂数)
- 二十二、商城 - 商品录入-FastDFS(10)
热门文章
- android标题栏上增加按钮,Android:向自定义标题栏添加按钮
- 马士兵java教程笔记_马士兵java教程笔记4
- mysql线程挣用问题_MySQL 并发线程的理解
- 在JS中使用trim 方法
- Jawin –Java/Win32互动项目 可调用DLL及COM的调用项目
- 安卓学习笔记18:常用控件 - 按钮、图像视图和图像按钮
- python随机颜色代码_python绘制随机颜色太阳花
- Android人脸识别开发入门--基于虹软免费SDK实现
- html5怎么让div集中,html – 如何集中5个div而不使用margin-left?
- android bitmap to base64_Android基础(11)—你需要知道的内存知识