# 统计学习方法第二章感知机例题import numpy as np;import matplotlib.pyplot as plt
#样本数据
sample_x = np.array([[3,3],[4,3],[1,1]])
sample_y = np.array([1,1,-1])#为分类器设置初始参数
w = np.array([0,0])
b =0
Eta =1#学习率#进行迭代for i inrange(0,100):
flag =-1
num =-1for j inrange(len(sample_x)):if sample_y[j]!=np.sign(np.dot(w,sample_x[0])+b):
num = j
breakif num ==-1:#一开始设置的初始参数既可以完成对样本的分类break
w = w + Eta*sample_x[num]*sample_y[num]
b = b +Eta*sample_y[num]#绘制分类结果
x_label =[0,8]
y_label =[0,8]for i inrange(len(x_label)):
y_label[i]=(-w[0]*x_label[i]-b)/w[1]#print(y_label[i])
plt.plot(x_label, y_label)print("w = ",w,"and b = ",b)for i inrange(len(sample_x)):if sample_y[i]==-1:
plt.plot(sample_x[i][0],sample_x[i][1],'ro')if sample_y[i]==1:
plt.plot(sample_x[i][0],sample_x[i][1],'bo')