可能是最简单的感知机算法
2015-12-28 13:25
453 查看
前言
最近学习统计机器学习,主要是参考李航的《统计学习》,看完感知机后准备用python实现一下书上的例子。自己先在网上搜索相关代码,可是看了半天,大家的实现都太复杂了,代码动辄上百行,而且将功能拆分成各个及其短小的函数,显得十分不紧凑,而且不容易理解掌握,因此,想自己实现一个更加简单的版本,方便初学者理解和掌握,所以有了以下的代码。代码
# -*- coding:utf8 -*- import os import sys import numpy as np #input x1 = np.array([3,3]) x2 = np.array([4,3]) x3 = np.array([1,1]) y = np.array([1,1,-1]) x = np.array([x1,x2,x3]) gram = np.dot(x, x.T) print "x:\n",x print "gram:\n",gram #params a = np.array([0,0,0]) b = 0; count = 0; condition = 0; samples_number = len(x) while(count < (samples_number-1)): for i in range(samples_number): condition = np.dot(a*y, gram[i]) condition = (condition + b) * y[i] if condition <= 0 : a[i] += 1 #update parmas b += y[i] count = 0 else: count += 1 w =np.dot( a*y,x) print "a:", a print "w:", w print "b:", b
总结
关键的部分只是while循环内部,初学者只要看懂这个循环就可以很快掌握感知机的写法,理解之后再写出更强壮的代码应该是比较容易了。自己通过这个程序学习了numpy中array的用法。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法