python 实现 机器学习(周志华) 参考答案 第五章 神经网络 5.7 RBF 神经网络

原创 2018年04月16日 00:19:36
#-*- coding:utf-8 -*-
import re
import xlrd
import xdrlib,sys
import xlwt
import datetime
import  time
import numpy as np
def rand(a, b): #返回a 行 n 列 (0,1)的随机数矩阵

    A=np.zeros((a,b))
    from random import random
    for h in range(a):
        for l in range(b):
            A[h][l]=random()
    return A
if __name__=="__main__":

    #异或的数据
    data=np.array([[0,0],[0,1],[1,0],[1,1]])
    y=np.array([0,1,1,0])

    t=10 #隐藏神经元的数目,大于输入层数目
    p=rand(4,t)       #径向基函数的值

    ty=rand(4,1)      #输出值

    w=rand(1,t)  #隐藏层第i个神经元与输出神经元的权重

    b=rand(1,t)  #样本与第i个神经元中心的距离的缩放系数

    tk=0.5

    # [id, c] = kmeans(x, 2);
    c = rand(t, 2) # 隐层第i个神经元的中心

    kn=0  #迭代次数
    sn=0  #累积误差值累积次数
    old_ey=0  #前一次迭代的累积误差
    print((np.array(data[0]) - np.array(c[0])).T)
    while 1:
        kn=kn+1

        #计算每个样本的径向基函数的值
        for i in range(4):
            for j in range(t):
                ij=(data[i]-c[j])
                ij=ij.dot(ij.T) #矩阵相乘
                p[i][j]=np.exp(-1*b[0][j]*ij)
            ty[i]=w.dot(p[i].T)
        print(p)

        #计算累积误差
        ey=(ty.T-y).dot((ty.T-y).T)
        ey=ey[0][0]
        print('ey:',ey)
        #g更新w,b
        dw=np.zeros((1,t))
        db=np.zeros((1,t))

        for i in range(4):
            for j in range(t):
                dw[0][j]=dw[0][j]+(ty[i]-y[i])*p[i][j]
                ij = (data[i] - c[j])
                ij = ij.dot(ij.T)  # 矩阵相乘
                db[0][j]=db[0][j]-(ty[i]-y[i])*w[0][j]*ij*p[i][j]
        print("dw:", dw)
        w=w-tk*dw/4
        b=b-tk*db/4

        #迭代终止条件
        if(abs(old_ey-ey)<0.0001):
            sn=sn+1
            if(sn==10):
                break
        else:
            old_ey=ey
            sn=0

github地址:https://github.com/wu-yy/RBF/tree/master

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TH_NUM/article/details/79955388

周志华 《机器学习》之 第五章(神经网络)概念总结

记得在读研期间认真学习过神经网络这门课程,当时老师讲得也挺细的,自己当时觉得理论也学得还不错,在结课的时候记得用BP神经网络C++实现过一个简单的验证码识别程序,所以对BP神经网络理解还是有一定记忆的...
  • lixianjun913
  • lixianjun913
  • 2016-08-16 11:05:57
  • 1069

机器学习(周志华) 参考答案 第五章 神经网络 5.5

机器学习(周志华) 参考答案 第五章 神经网络 5.5 机器学习(周志华西瓜书) 参考答案 总目录...
  • icefire_tyh
  • icefire_tyh
  • 2016-08-03 19:06:18
  • 4030

机器学习(周志华) 参考答案 第五章 神经网络 5.7

机器学习(周志华) 参考答案 第五章 神经网络 5.7 机器学习(周志华西瓜书) 参考答案 总目录...
  • icefire_tyh
  • icefire_tyh
  • 2016-08-03 19:41:01
  • 1860

周志华《机器学习》课后习题解答系列(六):Ch5 - 神经网络

本章学习了神经网络。基础知识部分包括感知机、BP算法、RNN、SOM、深度学习等内容,实践部分涉及了多种神经网络模型的应用实验。...
  • Snoopy_Yuan
  • Snoopy_Yuan
  • 2017-05-12 09:18:09
  • 2093

《机器学习》--周志华 (第五章学习笔记)

神经网络神经元模型​ 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应​ 神经网络中最基本的成分是神经元模型,即“简单单元”...
  • Cristal_yin
  • Cristal_yin
  • 2017-07-30 08:30:49
  • 984

<机器学习>(周志华)读书笔记 -- 第五章 神经网络

神经网络大概是当下最热门的技术之一了,很多没有学过计算机的同学们都知道深度神经网络之类的热词。但是神经忘光了实际上已经很早了,在1988年的时候,就已经提出了这个概念。而1943年,就已经有了M-P神...
  • geng333abc
  • geng333abc
  • 2017-03-30 14:22:24
  • 618

根据《机器学习》(周志华)第五章内容,用Python实现标准BP算法

BP神经网络由一层输入层、任意隐层(一般为1)、一层输出层组成。假定输入向量为n维向量,即输入神经元数量为n,隐层的层数为num,每一层隐层的神经元数量为eachCount,输出向量为yCount维向...
  • qq_33534383
  • qq_33534383
  • 2018-01-05 14:11:45
  • 159

机器学习(周志华)读书笔记-(五)神经网络(1)

神经网络1、生物学上的神经网络是是目前发现的神经元细胞间相互组合链接组成一个互连的网络,通过对外界的刺激,神经元产生发送化学物质进而内部发生电位变化,下图是生物神经元结构。        生物神经元的...
  • dingyahui123
  • dingyahui123
  • 2017-08-23 15:05:43
  • 804

机器学习之径向基神经网络(RBF NN)

本文基于台大机器学习技法系列课程进行的笔记总结。 主要内容如下图所示: 首先介绍一下径向基函数网络的Hypothesis和网络的结构,然后介绍径向基神经网络学习算法,以及利用K-means进行的学...
  • LG1259156776
  • LG1259156776
  • 2015-07-17 00:47:05
  • 19068
收藏助手
不良信息举报
您举报文章:python 实现 机器学习(周志华) 参考答案 第五章 神经网络 5.7 RBF 神经网络
举报原因:
原因补充:

(最多只允许输入30个字)