单层感知器代码

import numpy as np
import matplotlib.pyplot as plt
#输入数据
X=np.array([[1,3,3],[1,4,3],[1,1,1]])
#标签
Y=np.array([1,1,-1])
#权值初始化,1行3列,取值范围-1到1
W=(np.random.random(3)-0.5)*2
print(W)
#学习率
lr=0.11
#计算迭代次数
n=0
#神经网络输出
O=0

def update():
    global X,Y,W,n,lr
    O=np.sign(np.dot(X,W.T))
    n=n+1
    Wc=lr*(Y-O.T).dot(X)/int(X.shape[0])
    W=W+Wc

def fun():
    for _ in range(100):
        print(W)
        update()
        O=np.sign(np.dot(X,W.T))
        if( O==Y.T).all():
            print("finished:",n)
            break
    k=-W[1]/W[2]
    b=-W[0]/W[2]
    x1=[3,4]
    y1=[3,3]
    x2=[1]
    y2=[1]
    plt.figure()
    x_data=np.linspace(0,5)
    plt.plot(x_data,k*x_data+b,'r')
    plt.plot(x1,y1,'bo')
    plt.plot(x2,y2,'yo')
    plt.show()
fun()

猜你喜欢

转载自blog.csdn.net/qq_40239482/article/details/80309501