• 神经网络--单层感知器--代码实践--你指的拥有


    -----

    '''
    单层感知机是最简单的神经网络,这是是用code 实现单层感知机分类
    '''
    
    import  numpy as np
    import matplotlib.pyplot as plt
    
    ###定义输入X  ,得到一个3行3列的矩阵
    
    X = np.array([[1,3,3],
                 [1,4,3],
                 [1,1,1]])
    
    #定义标签
    Y = np.array([1,1,-1])
    
    ###定义三个权重 W  是一个3行1列的数据
    W= (np.random.random(3)-0.5)*2   #x = (np.random.random(3)-0.5)*2   # generate  3  numbers   0  1  ---(-0.5)-->   -0.5 0.5   ----*2 --->  -1 1
    
    ###实际输出
    O = 0
    '''
    学习率的调整   -learning rate adjustment
    为了能够使得梯度下降法有较好的性能,我们需要把学习率的值设定在合适的范围内。
    学习率决定了参数移动到最优值的速度快慢。如果学习率过大,很可能会越过最优值;
    反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。
    所以学习率对于算法性能的表现至关重要。
    '''
    #设置学习率
    lr = 0.11
    ##计算迭代次数
    n = 0
    
    # 更新权重
    def update():
        global  X,Y,W,lr ,n
        n+=1
        O = np.sign(np.dot(X, W.T))  # 实际输出
        W_D = lr*(Y-O).dot(X)/X.shape[0]  #德尔特
        wd = (Y-O).dot(X)/X.shape[0]
        print(wd)
        print(W_D)
        W =W + W_D
    
    for _ in range(100):
        update()
        print(W)
        print(n)
    
        O = np.sign(np.dot(X, W.T))
        if(Y.T == O).all():
            print(W)
            print(n)
            break
    
    #正样本
    x1 = [3,4]
    y1 = [3,3]
    #负样本
    x2 = [1]
    y2 = [1]
    
    #计算分界线的斜率以及截距  这个地you意思
    k = -W[1]/W[2]
    d = -W[0]/W[2]
    print('k=',k)
    print('d=',d)
    
    '''
    x0=1
    x0*w0+x1*w1+x2*w2 = 0    #等于零是因为我们的 Y 是 -1 1 属于分类问题
    #所以会就出 x1 x2 的关系 ,构成  k 和 d   ,一元一次方程 ,求得 Y
    '''
    
    
    xdata = np.linspace(0,5)
    
    plt.figure()
    plt.plot(xdata,xdata*k+d,'r')
    plt.plot(x1,y1,'bo')
    plt.plot(x2,y2,'yo')
    plt.show()
    
    
    
    
    




    -----

  • 相关阅读:
    Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name
    docker-compose 安装solr+ikanalyzer
    centos 安装Python3
    spring+springmvc+mybatis 开发JAVA单体应用
    职责链模式例子
    ssm(spring、springmvc、mybatis)框架整合
    PAT (Advanced Level) Practise
    PAT (Advanced Level) Practise
    PAT (Advanced Level) Practise
    PAT (Advanced Level) Practise
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501184.html
Copyright © 2020-2023  润新知