2-1径向基神经网络(RBF)代码

      点击查看完整代码http://www.daimapi.com/neuralnetwork2_1/

      径向基神经网络(Radial Basis Function Network),简写为RBF,该代码不使用任何第三方深度学习工具包实现,利用Python3实现。

# -*- coding: utf-8 -*-
from scipy import *
from scipy.linalg import norm, pinv
from matplotlib import pyplot as plt

class RBF:
    def __init__(self, indim, numCenters, outdim):
        self.indim = indim
        self.outdim = outdim
        self.numCenters = numCenters
        self.centers = [random.uniform(-1, 1, indim) for i in range(numCenters)]
        self.beta = 8
        self.W = random.random((self.numCenters, self.outdim))

    def _basisfunc(self, c, d):
        assert len(d) == self.indim
        return exp(-self.beta * norm(c-d)**2)

    def _calcAct(self, X):
        # 计算RBFs的激活函数值
        G = zeros((X.shape[0], self.numCenters), float)
        for ci, c in enumerate(self.centers):
            for xi, x in enumerate(X):
                G[xi,ci] = self._basisfunc(c, x)
        return G

    def train(self, X, Y):
        """ X: n x indim维的矩阵
            y: n x 1维的列向量"""

        # 从训练集随机选择中心向量
        rnd_idx = random.permutation(X.shape[0])[:self.numCenters]
        self.centers = [X[i,:] for i in rnd_idx]

        print("center", self.centers)
        # 计算RBFs的激活函数值
        G = self._calcAct(X)
        print(G)

        # 计算输出层的权值
        self.W = dot(pinv(G), Y)

    def test(self, X):
        """ X: n x indim维的矩阵 """

        G = self._calcAct(X)
        Y = dot(G, self.W)
        return Y
径向神经网络RBF)是一种常用的神经网络,常用于回归和分类任务。其特点是具有自适应的非线性映射能力,能够拟合各种复杂的非线性函数,并且具有较好的泛化能力。 在MATLAB中,可以通过以下代码进行RBF回归预测: 1. 加载数据 首先需要加载需要进行回归预测的数据,可以使用MATLAB中的load函数,例如: data = load('data.txt'); 其中,data.txt是存储数据的文件名,需要保证数据的格式正确。 2. 分离数据 将数据分成训练集和测试集,可以使用MATLAB中的crossvalind函数,例如: cv = crossvalind('Kfold', size(data, 1), 10); trainData = data(cv ~= 1, :); testData = data(cv == 1, :); 其中,将数据分成了10份,cv~=1表示排除第一份,cv==1表示第一份。 3. 训练模型 使用MATLAB中的newrb函数进行RBF网络的训练,例如: net = newrb(trainData(:, 1:end-1)', trainData(:, end)', 0, 1, 10, 1); 其中,trainData(:, 1:end-1)表示取数据的前n-1列作为输入,trainData(:, end)表示取数据的最后一列作为输出。0, 1, 10, 1分别表示误差目标、学习速率、隐藏层神经元个数和正则化参数。 4. 进行预测 使用MATLAB中的simulate函数进行预测,例如: predict = sim(net, testData(:, 1:end-1)'); 其中,testData(:, 1:end-1)表示取数据的前n-1列作为输入。 5. 评价模型 使用MATLAB中的regperf函数对模型进行评价,例如: MSE = regperf(predict', testData(:, end)) 其中,MSE表示均方误差。 以上就是使用MATLAB实现径向神经网络RBF回归预测的全部代码
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值