参考统计学习方法的算法简单实现了感知机算法
发到网上给大家参考
import pandas as pd
import numpy as np
def sumarray(array):
n = 0
for i in array:
n+=i
return n
def train(input_vec,labels): #训练感知机
w = [0,0]
b = 0
n = 0
learn = 1
while n != len(input_vec):
n = 0
for i in range(len(input_vec)):
if labels[i]*(sumarray(np.array(w)*np.array(input_vec[i]))+b) > 0:
n+=1
else:
w = list(np.array(w) +learn*labels[i]*np.array(input_vec[i]))
b = b +learn*labels[i]
print(w)
return w,b
def predict(input_vec,w,b): #预测函数
plabels = []
for i in input_vec:
print(i)
if sumarray(np.array(w)*np.array(i)) +b >0:
plabels.append(1)
else:
plabels.append(-1)
return plabels
if __name__ == '__main__':
input_vec = [[3,3],[4,3],[1,1]]
labels = [1,1,-1]
w,b = train(input_vec,labels)
print(predict(input_vec,w,b))