該實現為《資料探勘》課程的一次作業。資料在**上,所以資料為csv格式。但bp神經網路演算法為最一般的實現,所以有參考價值。
close all %關閉開啟的檔案
clear %清除記憶體中的資料
echo on %顯示執行的每一條命令
clc %清除命令列視窗
pause %敲任意鍵開始
%定義訓練樣本
%p為輸入向量,注意最後的轉置為了保證輸入向量與目標向量的列數相同。
%p為384*10000矩陣
p = csvread('c:\users\administrator\desktop\train.csv',1,2)';
%t為目標向量,注意最後的轉置為了保證輸入向量與目標向量的列數相同。
%t為1*10000矩陣
rng = [1, 1, 10000, 1];
t = csvread('c:\users\administrator\desktop\train.csv',1,1, rng)';
%建立乙個新的前向神經網路
%傳遞函式包括tansig、purelin、logsig
%newff舊的使用方法,會有warning
net=newff(minmax(p),[20,1],,'traingdm')
%設定訓練引數
net.trainparam.show = 100; %100個迭代顯示收斂曲線變化
net.trainparam.lr = 0.05; %學習速率為0.05
net.trainparam.mc = 0.9; %網路中設定動量因子為c=0.9 ?
net.trainparam.epochs = 10000; %最大訓練次數為10000
net.trainparam.goal = 1e-3; %訓練精度為1e-3
%呼叫 traingdm 演算法訓練 bp 網路
[net,tr]=train(net,p,t);
%讀取測試資料
q = csvread('c:\users\administrator\desktop\test.csv',1,1)';
%對bp網路進行**
a = sim(net,q);
%生成所需格式
n=10000 %陣列長度
b=zeros(1,n) %定義乙個長度為n的陣列a(陣列a為一行形式的陣列),並將每個元素值初始化為0
for num=1:n %迴圈給a的每個元素值初始化為num*2
b(num)=num;
endr = [b; a]';
%寫入資訊
csvwrite('c:\users\administrator\desktop\result.csv', r, 1, 0);
pause
clc
echo off
實現過程如上所示,下面解釋一下所用到的函式。
(1)csvread
第一種:m = csvread('filename') ,直接讀取csv檔案的資料,並返回給m,這時要求整個csv檔案內容全部為用逗號隔開的數字,不能用其他字元。
第二種:m = csvread('filename',r,c) ,讀取csv檔案中從第r-1行,第c-1列的資料開始的資料,這對帶有標頭檔案說明的csv檔案(如示波器等採集的檔案)的讀取是很重要的。
第三種:m = csvread('filename',r,c,rng),其中 rng = [r1 c1 r2 c2],讀取左上角為索引為(r1,c1) ,右下角索引為(r2,c2)的矩陣中的資料。
(2)newff
第乙個引數是乙個rx2的矩陣以定義r個輸入向量的最小值和最大值。
第二個引數是乙個設定每層神經元個數的陣列。
第三個引數是包含每層用到的傳遞函式名稱的細胞陣列。
最後乙個引數是用到的訓練函式的名稱。
(3)train
[net,tr] = train(net,x,t,xi,ai)
netnetwork x
輸入向量
t目標向量(default = zeros) xi
initial input delay conditions (default = zeros) ai
initial layer delay conditions (default = zeros)
and returns
netnew network tr
training record (epoch andperf)
(4)網路層數的選擇,傳遞函式的選擇,訓練引數的選擇尚待研究。
reference:
1. 新版matlab中神經網路訓練函式newff的使用方法
2. matlab newff使用
3. 怎樣從matlab中讀取csv檔案
4. matlab documentation
BP神經網路(基於MATLAB)
clc clear all 匯入資料 load s data.mat s含量所用資料 n 12 n 是自變數的個數 m 1 m 是因變數的個數 讀取訓練資料 train num 1600 訓練樣本數 train data s data 1 train num,特徵值歸一化 train input,m...
bp神經網路matlab 神經網路有哪些網路
深度學習,人工智慧,神經網路這些概念往往令初學者頭疼不已,這裡列出其基礎概念的歸納總結,幫助小白入坑,共同學習。人工神經網路 artificial neural network,ann 是一種模擬生物神經網路的結構和功能的數學模型或計算模型。神經網路與小波分析 混沌 粗糙理論 分形理論的融合。194...
BP神經網路設計的matlab簡單實現
例1 採用動量梯度下降演算法訓練 bp 網路。用matlab自帶的神經網路 訓練樣本定義如下 輸入向量為 p 1 2 3 1 1 1 5 3 目標向量為 t 1 1 1 1 解 本例的 matlab 程式如下 close all clear echo on clc newff 生成乙個新的前向神經網...