1樓:匿名使用者
你幹什麼用啊
是模式分類?
要是得話我有原始碼不過是用 matlab 工具箱寫的要嗎
2樓:快來下啊
希望對您有用
clcclear
close all
% 產生訓練樣本與測試樣本,每一列為一個樣本
p1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
t1 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];
p2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
t2 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];
% 歸一化
[pn1,minp,maxp] = premnmx(p1);
pn2 = tramnmx(p2,minp,maxp);
% 訓練
switch 2
case 1
% 神經元數是訓練樣本個數
spread = 1; % 此值越大,覆蓋的函式值就大(預設為1)
net = newrbe(pn1,t1,spread);
case 2
% 神經元數逐步增加,最多就是訓練樣本個數
goal = 1e-4; % 訓練誤差的平方和(預設為0)
spread = 1; % 此值越大,需要的神經元就越少(預設為1)
mn = size(pn1,2); % 最大神經元數(預設為訓練樣本個數)
df = 1; % 顯示間隔(預設為25)
net = newrb(pn1,t1,goal,spread,mn,df);
case 3
spread = 1; % 此值越大,需要的神經元就越少(預設為1)
net = newgrnn(pn1,t1,spread);
end% 測試
y1 = sim(net,pn1); % 訓練樣本實際輸出
y2 = sim(net,pn2); % 測試樣本實際輸出
y1 = full(compet(y1)); % 競爭輸出
y2 = full(compet(y2));
% 結果統計
result = ~sum(abs(t1-y1)) % 正確分類顯示為1
percent1 = sum(result)/length(result) % 訓練樣本正確分類率
result = ~sum(abs(t2-y2)) % 正確分類顯示為1
percent2 = sum(result)/length(result) % 測試樣本正確分類率
matlab中用rbf神經網路做**的**怎麼寫
3樓:會飛的小兔子
clc;
clearall;
closeall;
%%----buildatrainingsetofasimilarversionofxor
c_1=[00];
c_2=[11];
c_3=[01];
c_4=[10];
n_l1=20;%numberoflabel1
n_l2=20;%numberoflabel2
a=zeros(n_l1*2,3);
a(:,3)=1;
b=zeros(n_l2*2,3);
b(:,3)=0;
%createrandompoints
fori=1:n_l1
a(i,1:2)=c_1+rand(1,2)/2;
a(i+n_l1,1:2)=c_2+rand(1,2)/2;
endfori=1:n_l2
b(i,1:2)=c_3+rand(1,2)/2;
b(i+n_l2,1:2)=c_4+rand(1,2)/2;
end%showpoints
scatter(a(:,1),a(:,2),,'r');
holdon
scatter(b(:,1),b(:,2),,'g');
x=[a;b];
data=x(:,1:2);
label=x(:,3);
%%usingkmeanstofindcintervector
n_center_vec=10;
rng(1);
[idx,c]=kmeans(data,n_center_vec);
holdon
scatter(c(:,1),c(:,2),'b','linewidth',2);
%%calulatesigma
n_data=size(x,1);
%calculatek
k=zeros(n_center_vec,1);
fori=1:n_center_vec
k(i)=numel(find(idx==i));
%thencalucatesigma
sigma=zeros(n_center_vec,1);
fori=1:n_center_vec
[n,d]=knnsearch(data,c(i,:),'k',k(i));
l2=(bsxfun(@minus,data(n,:),c(i,:)).^2);
l2=sum(l2(:));
sigma(i)=sqrt(1/k(i)*l2);
end%%calutateweights
%kernelmatrix
k_mat=zeros(n_data,n_center_vec);
fori=1:n_center_vec
r=bsxfun(@minus,data,c(i,:)).^2;
r=sum(r,2);
k_mat(:,i)=exp((-r.^2)/(2*sigma(i)^2));
endw=pinv(k_mat'*k_mat)*k_mat'*label;
y=k_mat*w;
%y(y>=0.5)=1;
%y(y<0.5)=0;
%%trainingfunctionandpredictfunction
[w1,sigma1,c1]=rbf_training(data,label,10);
y1=rbf_predict(data,w,sigma,c1);
[w2,sigma2,c2]=lazyrbf_training(data,label,2);
y2=rbf_predict(data,w2,sigma2,c2);
擴充套件資料
matlab的特點
1、具有完備的圖形處理功能,實現計算結果和程式設計的視覺化;
2、友好的使用者介面及接近數學表示式的自然化語言,使學者易於學習和掌握;
3、功能豐富的應用工具箱(如訊號處理工具箱、通訊工具箱等) ,為使用者提供了大量方便實用的處理工具。
4樓:萬同堂
%rbf**模型
t_data=[0.1 0.68668 0.67143 0.79999 0.79091 0.40004;
0.36667 0.58001 0.1 0.7 0.71818 0.20001;
0.26 0.47334 0.1 0.29997 0.2091 0.80009;
0.36667 0.9 0.9 0.29997 0.13637 0.37504;
0.26 0.84668 0.67143 0.1 0.42727 0.37504;
0.36667 0.58001 0.44286 0.49999 0.1 0.55006;
0.15333 0.47334 0.44286 0.7 0.42727 0.60006;
0.1 0.84668 0.67143 0.29997 0.5 0.1;
0.15333 0.42 0.21429 0.49999 0.5 0.55006;
0.20667 0.79335 0.21429 0.59999 0.5 0.32503;
0.1 0.42 0.21429 0.9 0.5 0.45005;
0.1 0.84668 0.32857 0.59999 0.5 0.27502;
0.20667 0.47334 0.32857 0.29997 0.13637 0.50005;
0.1 0.68668 0.67143 0.49999 0.24546 0.20001;
0.42 0.58001 0.21429 0.9 0.9 0.42504;
0.31334 0.58001 0.44286 0.49999 0.31818 0.25002;
0.15333 0.42 0.1 0.19999 0.35454 0.55006;
0.20667 0.47334 0.32857 0.29997 0.31818 0.27502;
0.15333 0.68668 0.44286 0.29997 0.31818 0.40004;
0.20667 0.20667 0.21429 0.39999 0.28183 0.52506;
0.26 0.79335 0.21429 0.49999 0.57273 0.9;
0.42 0.36667 0.1 0.59999 0.35454 0.30003;
0.47334 0.36667 0.1 0.59999 0.57273 0.35003;
0.1 0.47334 0.67143 0.7 0.42727 0.49894;
0.42 0.58001 0.67143 0.49999 0.24546 0.47505;
0.31334 0.1 0.32857 0.9 0.79091 0.8501;
0.1 0.52667 0.21429 0.9 0.5 0.50005;
0.52667 0.55867 0.21429 0.1 0.28183 0.42504;
0.9 0.58001 0.55715 0.1 0.17273 0.32503;
0.15333 0.68668 0.62572 0.29997 0.2091 0.57506];
%初始化資料
tt=t_data(:,6);x=t_data(:,1:5);tt=tt';
%隨機選取中心
c=x;
%定義delta平方為樣本各點的協方差之和
delta=cov(x');
delta=sum(delta);
%隱含層輸出r
for i=1:1:30
for j=1:1:30
r(i,j)=((x(i,:)-c(j,:)))*((x(i,:)-c(j,:))');
r(i,j)=exp(-r(i,j)./delta(j));
endend
p=r;
%建模%r=radbas(p);
err_goal=0.001;
sc=3;
net=newrb(p,tt,err_goal,sc,200,1);
%測試ty=sim(net,p);
te=tt-ty;
tsse=sse(te);
tmse=mse(te);
%**(測試)曲線
figure;
plot(tt,'-+');
hold on;
plot(ty,'r:*');
legend('化驗值','**值');
title('rbf網路模型輸出**曲線');
xlabel('輸入樣本點');
ylabel('澱粉利用率');
axis([1,30,0,1]);
Matlab神經網路工具箱輸入問題
格式是對的,應該是可以的啊,你得仔細看看要匯入的targets資料到底在不在workspace中。 你好,我今天在使用工具箱時也遇到了類似的問題,並已經解決,希望我的建議可以幫助到你。在使用一部分神經網路工具箱時對標籤值 targets 是有格式要求的,如我輸入5個資料,對應的標籤分別是2,3,4,...
matlab中建立bp神經網路的函式newff的引數的
1.newff雖然沒有規定輸入層神經元個數,那輸入層神經元個數是如何確定的?輸入層是根據你讀入資料的維度,自動生成的。2.我現在讀入了10張 把每張 歸一化成了50 20的,並轉換成1 1000的行向量,最後生成了10 1000的二維矩陣,然後,我再用eye 10,10 函式製造了一個單位矩陣,那麼...
matlab在bp神經網路訓練時出現錯誤說未定義與
依然特雷西 1 實現 以函式的形式訓練神經網路命令。2 實現 p為輸入向量的方法命令。3 實現 t為目標向量的命令。4 實現 建立一個新的前向神經網路的命令。5 實現 呼叫演算法訓練bp網路的命令。6 其他設定命令。 主要問題出在txt樣本上,資料之間應以空格間隔,而不能是製表符,否則fcanf不能...