zoukankan      html  css  js  c++  java
  • (手写实现)BP神经网络python实现简单的线性回归

    import numpy as np
    import matplotlib.pyplot as plt
    import random
    
    #生成x数据集
    qq = []
    for i in range(100):
        qq.append([random.randint(0,100),random.randint(0,100)])
    qq = np.mat(qq).reshape(-1,2)
    # print(qq)
    z_labels = qq*[[3],[4]] + 5
    # print(z_label)
    
    num_y = 2
    num_x = 2
    k = np.mat([[1.,2.],[3.,4.]])
    
    qq = np.mat(qq).reshape(-1,2)
    b = np.mat([[1.],[2.]])
    B = 0
    w = np.ones((num_y,1))
    w = np.mat(w)
    α = 0.000001
    result = []
    test_x = []
    num = 0
    m,n = qq.shape
    for index in range(m):
        for i in range(5):
            x = qq[index,:]
            z_label = z_labels[index,:]
            # print('x:',x)
            # print(z_label)
            y = k * x.T + b
            # print('y:',y)
            a = y
            a[0,0] = max(0,a[0,0])
            a[1,0] = max(0,a[1,0])
            z = w.T * a + B
            # print("误差:",np.square(z-z_label),z,z_label)
            result.append(np.square(z-z_label)[0,0])
            if np.square(z - z_label) < 0.0001:
                # print('收敛')
                break
            error = (z - z_label)
            w -= α * error[0, 0] * a
            B -= α * error[0, 0]
            k -= α*error[0,0] * (w * x).T
            b -= α*error[0,0] * w
    
    final = []
    for i in qq:
        y = k * i.T + b
        a = y
        a[0, 0] = max(0, a[0, 0])
        a[1, 0] = max(0, a[1, 0])
        mm = w.T * a + B
        final.append(mm[0,0])
    # print(final)
    xx = np.linspace(0,100,100)
    plt.grid()
    plt.plot(xx,z_labels,'r--')
    plt.plot(xx,final,'g-')
    
    plt.show()

    预测线性函数 z = w1 * x1 + w2 * x2 

  • 相关阅读:
    CSS语言
    HTML语言
    JDBC技术
    存储过程
    Oracle和Mysql数据库技术
    正则表达式
    反射
    XML技术
    设计模式初步专题(自学,适合初级.更深入的会在框架阶段)
    线程池专题(自学)
  • 原文地址:https://www.cnblogs.com/cxhzy/p/10919263.html
Copyright © 2011-2022 走看看