大致学完了感知机之后,我试着用Python还原了一下原始算法,然后用matplotlib实现了一下动画效果,是不是很有意思呢~
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 19 13:49:04 2016
@author: fengxinhe
"""
import copy
from matplotlib import pyplot as pl
from matplotlib import animation as ani
w=[0,0] #weight vector
b=0 #bias
yita=0.5 #learning rate
data=[[(1,4),1],[(0.5,2),1],[(2,2.3), 1], [(1, 0.5), -1], [(2, 1), -1],[(4,1),-1],[(3.5,4),1],[(3,2.2),-1]]
#data=[[(3, 3), 1], [(4, 3), 1], [(1, 1), -1]]
record=[]
"""
if y(wx+b)<=0,return false; else, return true
"""
def sign(vec):
global w,b
res=0
res=vec[1]*(w[0]*vec[0][0]+w[1]*vec[0][1]+b)
if res>0: return 1
else: return -1
"""
update the paramaters w&b
"""
def update(vec):
global w,b,record
w[0]=w[0]&