Python: 感知机学习算法原始形式
May 26, 2015
参考了李航老师的《统计学习方法》第二章,利用Python简单写了一个感知机算法,但是画图真是部分真是不太会(丑哭了)。
代码运行过程中会画出分类界面:
最后紫色的是收敛后的解。
Perceptron
Python
from numpy import *
import numpy as np
import matplotlib.pyplot as plt
import time
plt.ion()
plt.autoscale(enable=True, tight=False)
dataFn = "data.dat>"
def drawSpLine(w, b):
plt.plot([-b/w[0] if w[1]==0 else 0, 10 if w[0]==0 else -b/w[0]], [10 if w[1]==0 else -b/w[1], -b/w[1] if w[0]==0 else 0])
plt.draw()
plt.show()
with open(dataFn) as inFile:
data = inFile.readlines()
d = np.loadtxt(data)
for row in d:
if row[0]==1:
plt.plot(row[1], row[2], 'ro')
else:
plt.plot(row[1], row[2], 'bo')
plt.draw()
plt.show()
time.sleep(1)
w = ones(2)
b = random.randint(10)
eta = 1
print w
print b
drawSpLine(w, b)
time.sleep(1)
while True:
isConv = True
for row in d:
if row[0]*(dot(np.transpose(w), np.transpose(row[1:])) + b) <= 0:
w = w + eta * row[0] * row[1:]
b = b + eta * row[0]
print w, b
drawSpLine(w, b)
time.sleep(1)
isConv = False
break
if isConv:
print "Converged.>"
break
print "w>", w
print "b>", b
plt.show(block=True)
数据:
1 1 1 1 2 1 1 1 2 -1 4 2 -1 4 3 -1 3 3
原创文章,转载请注明:转载自magic282.me
本文链接地址: 感知机学习算法原始形式
感知机学习算法原始形式bymagic282 is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License .
文章的脚注信息由WordPress的 wp-posturl插件自动生成
0 Comments