精华内容
下载资源
问答
  • 本文介绍了运用计量统计软件Spyder(3.2.6 MAC-Python是版本3.6)建立BP神经网络模型的方法。Spyder是一款出色的Python语言编辑器,界面类似Matlab。主要运用的方程是MLPClassifier整理数据在Excel中将变量按列整理好...

    本文介绍了运用计量统计软件Spyder(3.2.6 MAC-Python是版本3.6)建立BP神经网络模型的方法。Spyder是一款出色的Python语言编辑器,界面类似Matlab。主要运用的方程是MLPClassifier

    整理数据

    在Excel中将变量按列整理好,其中1至13列为输入变量,第14列为输出变量,即输入层包含13个神经元,输出层又一个神经元。另外设定一个隐含层,包括20个神经元

    每个神经元包含252个数据点,其中最后一个点不参与训练,留作测试最终的模型,即利用前251个数据点训练模型,利用最后一个点检验模型

    在Spyder中输入数据

    1、打开Terminal,输入spyder,按Enter键确认,打开Spyder界面

    2、在Console中右击,可选择清除所有变量和Console历史

    3、删除屏幕上的代码,点击保存,将文件保存在数据所在的文件夹

    4、导入pandas包,利用其读取Excel。导入numpy包,利用设定数据类型。导入sklearn.neural_network包,利用其MLPClassifier函数

    1.import pandas # for reading excel data

    2.import numpy # set data as integer

    3.from sklearn.neural_network import MLPClassifier # for the modelfit

    5、利用pandas.read_excel读取Excel,提示FileNotFoundError: [Errno 2] No such file or directory:'DataForThesis.xlsx',这是因为Spyder重启后,路径不再是文件所在位置,需要在路径栏调整位置

    6、调整路径后,运行pandas.read_excel,设定为无变量名称,变量df出现在Variableexplorer栏中。252行14列,对应14个变量和采集的252个数据

    1.import pandas #for excel reading

    2.import numpy # for type transfer

    3.import sklearn #for PCA and scale

    4.

    5.df = pandas.read_excel("bodyfat_dataset.xlsx",header=None)

    6.

    7、选定训练数据和测试数据。需要特别说明的是numpy.int_(),她将提取的变量设定为整数,否则模型无法训练

    1.import pandas #for excel reading

    2.import numpy # for type transfer

    3.import sklearn #for PCA and scale

    4.

    5.df = pandas.read_excel("bodyfat_dataset.xlsx",header=None)

    6.

    7.data_train_x = numpy.int_(df.iloc[0:251,0:13])

    8.data_train_y = numpy.int_(df.iloc[0:251,13])

    9.data_test_x = numpy.int_(df.iloc[251,0:13])

    10.data_test_y = numpy.int_(df.iloc[251,13])

    11.

    进行BP神经网络建模

    数据录入完成后,继续输入代码

    1、直接提用sklearn.neural_network下的MLPClassifier函数,建立模型,同时设定隐含层有20个神经元,传递函数函数为Sigmoid函数。利用mlp.fit训练模型

    1.import pandas #for excel reading

    2.import numpy # for type transfer

    3.import sklearn #for PCA and scale

    4.

    5.df = pandas.read_excel("bodyfat_dataset.xlsx",header=None)

    6.

    7.data_train_x = numpy.int_(df.iloc[0:251,0:13])

    8.data_train_y = numpy.int_(df.iloc[0:251,13])

    9.data_test_x = numpy.int_(df.iloc[251,0:13])

    10.data_test_y = numpy.int_(df.iloc[251,13])

    11.

    12.mlp =MLPClassifier(hidden_layer_sizes=(20),activation=('logistic'))

    13.mlp.fit(data_train_x,data_train_y)

    14.

    2、对模型进行测试,并求得预测值与目标值的偏差

    1.import pandas #for excel reading

    2.import numpy # for type transfer

    3.import sklearn #for PCA and scale

    4.

    5.df = pandas.read_excel("bodyfat_dataset.xlsx",header=None)

    6.

    7.data_train_x = numpy.int_(df.iloc[0:251,0:13])

    8.data_train_y = numpy.int_(df.iloc[0:251,13])

    9.data_test_x = numpy.int_(df.iloc[251,0:13])

    10.data_test_y = numpy.int_(df.iloc[251,13])

    11.

    12.mlp =MLPClassifier(hidden_layer_sizes=(20),activation=('logistic'))

    13.mlp.fit(data_train_x,data_train_y)

    14.

    15.print(mlp.predict(data_test_x)-data_test_y)

    16.

    展开全文
  • BP神经网络预测股票,bp神经网络预测股票价格python代码,matlab源码
  • BP神经网络,bp神经网络预测模型,Python源码.rar
  • BP神经网络,bp神经网络预测模型,Python源码.zip
  • 包含BP神经网络的原理算法模型,并使用BP神经网络对数据进行分类
  • BP神经网络,bp神经网络预测模型,Python源码.rar.zip
  • bp神经网络,bp神经网络预测模型,Python源码.zip.zip
  • 7以开盘价格,最高价,最低价,收盘价格,初始价训练系统
  • BP神经网络,bp神经网络预测模型,Python源码 (1).zip
  • BP神经网络,bp神经网络预测模型,Python源码(1).rar
  • BP神经网络算法 python实现BP神经网络算法 python实现直接上代码是最有效的学习方式。这篇教程通过由一段简短的 python 代码实现的非常简单的实例来讲解 BP 反向传播算法。当然,上述程序可能过于简练了。下面我会将...

    BP神经网络算法 python实现

    BP神经网络算法 python实现

    直接上代码是最有效的学习方式。这篇教程通过由一段简短的 python 代码实现的非常简单的实例来讲解 BP 反向传播算法。

    当然,上述程序可能过于简练了。下面我会将其简要分解成几个部分进行探讨。

    第一部分:一个简洁的神经网络

    一个用 BP 算法训练的神经网络尝试着用输入去预测输出。

    考虑以上情形:给定三列输入,试着去预测对应的一列输出。我们可以通过简单测量输入与输出值的数据来解决这一问题。这样一来,我们可以发现最左边的一列输入值和输出值是完美匹配/完全相关的。直观意义上来讲,反向传播算法便是通过这种方式来衡量数据间统计关系进而得到模型的。下面直入正题,动手实践。

    2 层神经网络:

    Output After Training:

    [[ 0

    [ 0

    [ 0

    [ 0]

    变量 定义说明

    X 输入数据集,形式为矩阵,每 1 行代表 1 个训练样本。

    y 输出数据集,形式为矩阵,每 1 行代表 1 个训练样本。

    l0 网络第 1 层,即网络输入层。

    l1 网络第 2 层,常称作隐藏层。

    Syn 第一层权值,突触 0 ,连接 l0 层与 l1 层。

    0

    * 逐元素相乘,故两等长向量相乘等同于其对等元素分别相乘,结果为同等长度的向量。

    – 元素相减,故两等长向量相减等同于其对等元素分别相减,结果为同等长度的向量。

    x.dot(y) 若 x 和 y 为向量,则进行点积操作;若均为矩阵,则进行矩阵相乘操作;若其中之一为矩阵,则进行向量与矩阵相乘操作。

    正如在“训练后结果输出”中看到的,程序正确执行!在描述具体过程之前,我建议读者事先去尝试理解并运行下代码,对算法程序的工作方式有一个直观的感受。最好能够在 ipython notebook 中原封不动地跑通以上程序(或者你想自己写个脚本也行,但我还是强烈推荐 notebook )。下面是对理解程序有帮助的几个关键地方:

    · 对比 l1 层在首次迭代和最后一次迭代时的状态。

    · 仔细察看 “nonlin” 函数,正是它将一个概率值作为输出提供给我们。

    · 仔细观察在迭代过程中,l1_error 是如何变化的。

    · 将第 36 行中的表达式拆开来分析,大部分秘密武器就在这里面。

    · 仔细理解第 39 行代码,网络中所有操作都是在为这步运算做准备。

    下面,让我们一行一行地把代码过一遍。

    建议:用两个屏幕来打开这篇博客,这样你就能对照着代码来阅读文章。在博客撰写时,我也正是这么做的。

    第 1 行:这里导入一个名叫 numpy 的线性代数工具库,它是本程序中唯一的外部依赖。

    第 4 行:这里是我们的“非线性”部分。虽然它可以是许多种函数,但在这里,使用的非线性映射为一个称作 “sigmoid” 的函数。Sigmoid 函数可以将任何值都映射到一个位于 0 到 1 范围内的值。通过它,我们可以将实数转化为概率值。对于神经网络的训练, Sigmoid 函数也有其它几个非常不错的特性。

    第 5 行: 注意,通过 “nonlin” 函数体还能得到 sigmod 函数的导数(当形参 deriv 为 True 时)。Sigmoid 函数优异特性之一,在于只用它的输出值便可以得到其导数值。若 Sigmoid 的输出值用变量 out 表示,则其导数值可简单通过式子 out *(1-out) 得到,这是非常高效的。

    若你对求导还不太熟悉,那么你可以这样理解:导数就是 sigmod 函数曲线在给定点上的斜率(如上图所示,曲线上不同的点对应的斜率不同)。有关更多导数方面的知识,可以参考可汗学院的导数求解教程。

    第 10 行:这行代码将我们的输入数据集初始化为 numpy 中的矩阵。每一行为一个“训练实例”,每一列的对应着一个输入节点。这样,我们的神经网络便有 3 个输入节点,4 个训练实例。

    第 16 行:这行代码对输出数据集进行初始化。在本例中,为了节省空间,我以水平格式( 1 行 4 列)定义生成了数据集。“.T” 为转置函数。经转置后,该 y 矩阵便包含 4 行 1 列。同我们的输入一致,每一行是一个训练实例,而每一列(仅有一列)对应一个输出节点。因此,我们的网络含有 3 个输入, 1 个输出。

    第 20 行:为你的随机数设定产生种子是一个良好的习惯。这样一来,你得到的权重初始化集仍是随机分布的,但每次开始训练时,得到的权重初始集分布都是完全一致的。这便于观察你的策略变动是如何影响网络训练的。

    第 23 行:这行代码实现了该神经网络权重矩阵的初

    展开全文
  • 对minist数据集进行手写体数字识别,得到识别率、训练时间和单个测试的输入输出。
  • BP神经网络python实现,来预测城市空气污染等级,基本上可以做到正确率90%,
  • 今天学会了BP神经网络python代码实现,做了一个关于城市客运运输量的预测。 首先数据来源于统计局网站 可能这个分析的角度毫无意义,但也是为了学习下BP神经网络的实现过程,自己做的一个小案例。 话不多说直接...

    城市客运运输量的BP神经网络预测

    今天学会了BP神经网络的python代码实现,做了一个关于城市客运运输量的预测。
    首先数据来源于统计局网站
    在这里插入图片描述可能这个分析的角度毫无意义,但也是为了学习下BP神经网络的实现过程,自己做的一个小案例。
    话不多说直接附上代码

    下面展示一些 内联代码片

    #-*- coding: utf-8 -*-
    
    import numpy as np
    import  pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from sklearn.preprocessing import MinMaxScaler
    
    "数据导入"
    df = pd.read_csv('城市客运量.csv',engine='python')
    x = df[['本月公共汽电车客运完成量', '本月轨道交通客运完成量', '本月客运轮渡客运完成量']]
    y = df[['本月巡游出租汽车客运完成量']]
    
    "数据归一化处理"
    x_scaler = MinMaxScaler(feature_range=(-1,1))
    y_scaler = MinMaxScaler(feature_range=(-1,1))
    x = x_scaler.fit_transform(x)
    y = y_scaler.fit_transform(y)
    
    "方便后续矩阵乘法的操作"
    sample_in = x.T
    sample_out = y.T
    
    
    "网络参数"
    #最大迭代次数
    max_epochs = 60000
    #学习效率
    learn_rate = 0.035
    #训练终止条件
    mse_final = 6.5e-4
    sample_number = x.shape[0]
    input_number = 3
    output_number = 1
    hidden_unit_number = 8
    
    #输入层到隐藏层权重和偏置单元 8*3的
    w1 = 0.5 * np.random.rand(hidden_unit_number, input_number) - 0.1
    #8*1
    b1 = 0.5 * np.random.rand(hidden_unit_number, 1) - 0.1
    
    #隐藏层到输出层的权重和偏置单元 2*8的
    w2 = 0.5 * np.random.rand(output_number, hidden_unit_number) - 0.1
    #2*1
    b2 = 0.5 * np.random.rand(output_number, 1) - 0.1
    
    #定义激活函数,本案例中未设置输出层的激活函数
    def sigmoid(z):
        return 1.0/(1+np.exp(-z))
    
    #开始训练
    mse_history = []
    for i in range(max_epochs):
        #FP,前馈网络过程
        hidden_out = sigmoid(np.dot(w1, sample_in) + b1)
        network_out = np.dot(w2, hidden_out) + b2
        #误差
        err = sample_out - network_out
        mse = np.average(np.square(err))
        mse_history.append(mse)
        if mse < mse_final:
            break
    
        #BP,反馈网络过程
        delta2 = -err
        delta1 = np.dot(w2.T, delta2) * hidden_out * (1 - hidden_out)
    
        delta_w2 = np.dot(delta2, hidden_out.T)
        delta_b2 = np.dot(delta2, np.ones((sample_number, 1)))
    
        delta_w1 = np.dot(delta1, sample_in.T)
        delta_b1 = np.dot(delta1, np.ones((sample_number, 1)))
    
        #更新权重
        w2 -= learn_rate * delta_w2
        b2 -= learn_rate * delta_b2
        w1 -= learn_rate * delta_w1
        b1 -= learn_rate * delta_b1
    
    
    mse_history1g = np.log10(mse_history)
    
    #反转获取实际值
    network_out = y_scaler.inverse_transform(network_out.T)
    sample_out = y_scaler.inverse_transform(y)
    
    
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    #数据
    #误差曲线图
    plt.figure(1)
    plt.plot(mse_history1g, color = 'green', label = '训练误差')
    plt.plot([0, len(mse_history1g)], [min(mse_history1g), min(mse_history1g)], color = 'red')
    plt.xlabel('迭代次数')
    plt.ylabel('误差')
    plt.title('训练误差图')
    
    
    #实际与预测
    plt.figure(2)
    plt.plot(network_out, color = 'green', label = '实际值')
    plt.plot(sample_out, color = 'red', label = '预测值')
    plt.xlabel('月份')
    plt.ylabel('客运量(万人次)')
    plt.title('预测结果图')
    plt.show()
    
    
    
    
    
    

    在这里插入图片描述
    在这里插入图片描述
    更复杂的算法正在学习中,有什么问题希望大家多多指教~~

    展开全文
  • 基于Python语言实现的Bp神经网络
  • 联想大家熟悉的回归问题, 神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数, 并使用该函数进行预测, 网络的训练过程即为调节该函数参数提高预测精度的过程.神经网络要解决的问题与最小二乘法...

    人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善.

    联想大家熟悉的回归问题, 神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数, 并使用该函数进行预测, 网络的训练过程即为调节该函数参数提高预测精度的过程.神经网络要解决的问题与最小二乘法回归解决的问题并无根本性区别.

    回归和分类是常用神经网络处理的两类问题, 如果你已经了解了神经网络的工作原理可以在http://playground.tensorflow.org/上体验一个浅层神经网络的工作过程.

    感知机(Perceptron)是一个简单的线性二分类器, 它保存着输入权重, 根据输入和内置的函数计算输出.人工神经网络中的单个神经元即是感知机.

    在前馈神经网络的预测过程中, 数据流从输入到输出单向流动, 不存在循环和返回的通道.

    目前大多数神经网络模型都属于前馈神经网络, 在下文中我们将详细讨论前馈过程.

    多层感知机(Multi Layer Perceptron, MLP)是由多个感知机层全连接组成的前馈神经网络, 这种模型在非线性问题中表现出色.

    所谓全连接是指层A上任一神经元与临近层B上的任意神经元之间都存在连接.

    反向传播(Back Propagation,BP)是误差反向传播的简称,这是一种用来训练人工神经网络的常见算法, 通常与最优化方法(如梯度下降法)结合使用.

    本文介绍的神经网络模型在结构上属于MLP, 因为采用BP算法进行训练, 人们也称其为BP神经网络.

    BP神经网络原理

    经典的BP神经网络通常由三层组成: 输入层, 隐含层与输出层.通常输入层神经元的个数与特征数相关,输出层的个数与类别数相同, 隐含层的层数与神经元数均可以自定义.

    793413-20161010152810539-341221931.png

    每个神经元代表对数据的一次处理:

    793413-20161010152655274-1512072099.png

    每个隐含层和输出层神经元输出与输入的函数关系为:

    \[I_j=\sum_iW_{ij}O_i

    \]

    \[O_j= sigmod(I_l) =\frac{1}{1+e^{-I_l}}

    \]

    其中\(W_{ij}\)表示神经元i与神经元j之间连接的权重,\(O_j\)代表神经元j的输出, sigmod是一个特殊的函数用于将任意实数映射到(0,1)区间.

    上文中的sigmod函数称为神经元的激励函数(activation function), 除了sigmod函数\(\frac{1}{1+e^{-I_l}}\)外, 常用还有tanh和ReLU函数.

    我们用一个完成训练的神经网络处理回归问题, 每个样本拥有n个输入.相应地,神经网络拥有n个输入神经元和1个输出神经元.

    实际应用中我们通常在输入层额外增加一个偏置神经元, 提供一个可控的输入修正;或者为每个隐含层神经元设置一个偏置参数.

    我们将n个特征依次送入输入神经元, 隐含层神经元获得输入层的输出并计算自己输出值, 输出层的神经元根据隐含层输出计算出回归值.

    上述过程一般称为前馈(Feed-Forward)过程, 该过程中神经网络的输入输出与多维函数无异.

    现在我们的问题是如何训练这个神经网络.

    作为监督学习算法,BP神经网络的训练过程即是根据前馈得到的预测值和参考值比较, 根据误差调整连接权重\(W_{ij}\)的过程.

    训练过程称为反向传播过程(BackPropagation), 数据流正好与前馈过程相反.

    首先我们随机初始化连接权重\(W_{ij}\), 对某一训练样本进行一次前馈过程得到各神经元的输出.

    首先计算输出层的误差:

    \[E_j= sigmod'(O_j)*(T_j-O_j) =O_j(1-O_j)(T_j-O_j)

    \]

    其中\(E_j\)代表神经元j的误差,\(O_j\)表示神经元j的输出, \(T_j\)表示当前训练样本的参考输出, \(sigmod'(x)\)是上文sigmod函数的一阶导数.

    793413-20170106165524300-795195019.jpg

    计算隐含层误差:

    \[E_j= sigmod'(O_j)*\sum_kE_kW_{jk} =O_j(1-O_j)\sum_kE_kW_{jk}

    \]

    隐含层输出不存在参考值, 使用下一层误差的加权和代替\((T_j-O_j)\).

    计算完误差后就可以更新\(W_{ij}\)和\(\theta_j\):

    \[W_{ij}=W_{ij}+\lambda E_jO_i

    \]

    其中\(\lambda\)是一个称为学习率的参数,一般在(0,0.1)区间上取值.

    实际上为了加快学习的效率我们引入称为矫正矩阵的机制, 矫正矩阵记录上一次反向传播过程中的\(E_jO_i\)值, 这样\(W_j\)更新公式变为:

    \[W_{ij}=W_{ij}+\lambda E_jO_i + \mu C_{ij}

    \]

    \(\mu\)是一个称为矫正率的参数.随后更新矫正矩阵:

    \[C_{ij} = E_jO_i

    \]

    每一个训练样本都会更新一次整个网络的参数.我们需要额外设置训练终止的条件.

    最简单的训练终止条件为设置最大迭代次数, 如将数据集迭代1000次后终止训练.

    单纯的设置最大迭代次数不能保证训练结果的精确度, 更好的办法是使用损失函数(loss function)作为终止训练的依据.

    损失函数可以选用输出层各节点的方差:

    \[L = \sum_j(T_j-O_j)^2

    \]

    为了避免神经网络进行无意义的迭代, 我们通常在训练数据集中抽出一部分用作校验.当预测误差高于阈值时提前终止训练.

    Python实现BP神经网络

    首先实现几个工具函数:

    def rand(a, b):

    return (b - a) * random.random() + a

    def make_matrix(m, n, fill=0.0): # 创造一个指定大小的矩阵

    mat = []

    for i in range(m):

    mat.append([fill] * n)

    return mat

    定义sigmod函数和它的导数:

    def sigmoid(x):

    return 1.0 / (1.0 + math.exp(-x))

    def sigmod_derivate(x):

    return x * (1 - x)

    定义BPNeuralNetwork类, 使用三个列表维护输入层,隐含层和输出层神经元, 列表中的元素代表对应神经元当前的输出值.使用两个二维列表以邻接矩阵的形式维护输入层与隐含层, 隐含层与输出层之间的连接权值, 通过同样的形式保存矫正矩阵.

    定义setup方法初始化神经网络:

    def setup(self, ni, nh, no):

    self.input_n = ni + 1

    self.hidden_n = nh

    self.output_n = no

    # init cells

    self.input_cells = [1.0] * self.input_n

    self.hidden_cells = [1.0] * self.hidden_n

    self.output_cells = [1.0] * self.output_n

    # init weights

    self.input_weights = make_matrix(self.input_n, self.hidden_n)

    self.output_weights = make_matrix(self.hidden_n, self.output_n)

    # random activate

    for i in range(self.input_n):

    for h in range(self.hidden_n):

    self.input_weights[i][h] = rand(-0.2, 0.2)

    for h in range(self.hidden_n):

    for o in range(self.output_n):

    self.output_weights[h][o] = rand(-2.0, 2.0)

    # init correction matrix

    self.input_correction = make_matrix(self.input_n, self.hidden_n)

    self.output_correction = make_matrix(self.hidden_n, self.output_n)

    定义predict方法进行一次前馈, 并返回输出:

    def predict(self, inputs):

    # activate input layer

    for i in range(self.input_n - 1):

    self.input_cells[i] = inputs[i]

    # activate hidden layer

    for j in range(self.hidden_n):

    total = 0.0

    for i in range(self.input_n):

    total += self.input_cells[i] * self.input_weights[i][j]

    self.hidden_cells[j] = sigmoid(total)

    # activate output layer

    for k in range(self.output_n):

    total = 0.0

    for j in range(self.hidden_n):

    total += self.hidden_cells[j] * self.output_weights[j][k]

    self.output_cells[k] = sigmoid(total)

    return self.output_cells[:]

    定义back_propagate方法定义一次反向传播和更新权值的过程, 并返回最终预测误差:

    def back_propagate(self, case, label, learn, correct):

    # feed forward

    self.predict(case)

    # get output layer error

    output_deltas = [0.0] * self.output_n

    for o in range(self.output_n):

    error = label[o] - self.output_cells[o]

    output_deltas[o] = sigmod_derivate(self.output_cells[o]) * error

    # get hidden layer error

    hidden_deltas = [0.0] * self.hidden_n

    for h in range(self.hidden_n):

    error = 0.0

    for o in range(self.output_n):

    error += output_deltas[o] * self.output_weights[h][o]

    hidden_deltas[h] = sigmod_derivate(self.hidden_cells[h]) * error

    # update output weights

    for h in range(self.hidden_n):

    for o in range(self.output_n):

    change = output_deltas[o] * self.hidden_cells[h]

    self.output_weights[h][o] += learn * change + correct * self.output_correction[h][o]

    self.output_correction[h][o] = change

    # update input weights

    for i in range(self.input_n):

    for h in range(self.hidden_n):

    change = hidden_deltas[h] * self.input_cells[i]

    self.input_weights[i][h] += learn * change + correct * self.input_correction[i][h]

    self.input_correction[i][h] = change

    # get global error

    error = 0.0

    for o in range(len(label)):

    error += 0.5 * (label[o] - self.output_cells[o]) ** 2

    return error

    定义train方法控制迭代, 该方法可以修改最大迭代次数, 学习率\(\lambda\), 矫正率\(\mu\)三个参数.

    def train(self, cases, labels, limit=10000, learn=0.05, correct=0.1):

    for i in range(limit):

    error = 0.0

    for i in range(len(cases)):

    label = labels[i]

    case = cases[i]

    error += self.back_propagate(case, label, learn, correct)

    编写test方法,演示如何使用神经网络学习异或逻辑:

    def test(self):

    cases = [

    [0, 0],

    [0, 1],

    [1, 0],

    [1, 1],

    ]

    labels = [[0], [1], [1], [0]]

    self.setup(2, 5, 1)

    self.train(cases, labels, 10000, 0.05, 0.1)

    for case in cases:

    print(self.predict(case))

    完整源代码参见bpnn.py

    使用tensorflow实现一个神经网络可能是更简单高效的方法, 可以参见tensorflow入门指南中的第二节:实现一个简单神经网络.

    展开全文
  • 联想大家熟悉的回归问题,神经网络模型实际上是根据训练样本创造出一个多维输入多维输出的函数,并使用该函数进行预测, 网络的训练过程即为调节该函数参数提高预测精度的过程.神经网络要解决的问题与最小二乘法回归...
  • tesorflow用于BP神经网络进行回归预测python,可以调节参数,全连接层三个,预测结果print出来,具体数据可造,格式通用即可
  • 机器学习 BP神经网络(Python实现)

    万次阅读 多人点赞 2019-06-08 15:38:11
    一个神经元即一个感知机模型,由多个神经元相互连接形成的网络,即神经网络。 这里我们只讨论单隐层前馈神经网络,其连接形式入下: 神经网络模型的待估参数即,每个神经元的阈值,以及神经元之间的连接权重。 ...
  • BP神经网络简单python实现 假设输入层有3个神经元,隐藏层有4个神经元,输出层有1个神经元,分析如何用3层(1输入层+1隐藏层+1输出层)BP神经网络来解决异或问题。
  • 该代码是用python实现的手写BP神经网络,实现了反向传播的推导,是非常好的学习资料,有助于理解神经网络的内部结构。内部有权重测试图片等。
  • python3_实现BP神经网络 + BP神经网络应用实例

    万次阅读 多人点赞 2018-07-29 22:10:28
    1.BP神经网络简介 BP神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。 优点:具有任意复杂的模式分类能力和优良的...
  • bp神经网络python实现 导入所需要的包 import numpy as np import matplotlib.pyplot as plt 激活函数(选用sigmoid函数) def sigmoid(x): return 1 / (1 + np.exp(-x)) 连接层类(包含初始化,前向传播...
  • python实现实 BP神经网络回归预测模型 神 主要介绍了python实现BP神经网络回归预测模型,文中通过示例代码介绍的非常详细,对大家的学习或者工作 具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,847
精华内容 3,538
关键字:

bp神经网络预测python

python 订阅