统计学习方法 感知机模型

# 统计学习方法第二章感知机例题
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 in range(0,100):
    flag = -1
    num = -1
    for j in range(len(sample_x)):
        if sample_y[j]!=np.sign(np.dot(w,sample_x[0])+b):
            num = j
            break
    if 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 in range(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 in range (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')

        
    

统计学习方法 感知机模型