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
end
fori=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=[AB]
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))
end
%UsingknnsearchtofindKnearestneighborpointsforeachcentervector
%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))
end
W=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、功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
参考资料来源:百度百科—MATLAB
%%清空环境变量
clc
clear
%%
产生输入
输出数据
%
设置步长
interval=0.01
%
产生x1
x2
x1=-1.5:interval:1.5
x2=-1.5:interval:1.5
%
按照函数先求得相应的函数值,作为网络的输出。
F
=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2)
%%
网络建立和训练
%
网络建立
输入为[x1x2],输出为F。Spread使用默认。
net=newrbe([x1x2],F)
%%
网络的效果验证
%
我们将原数据回带,测试网络效果:
ty=sim(net,[x1x2])
%
我们使用图像来看网络对非线性函数的拟合效果
figure
plot3(x1,x2,F,'rd')
hold
on
plot3(x1,x2,ty,'b-.')
view(113,36)
title('可视化的方法观察准确RBF神经网络的拟合效果')
xlabel('x1')
ylabel('x2')
zlabel('F')
grid
on
%% 清空环境变量clc
clear
close all
%%
a=load('walk1.txt')%读取数据 % xlsread(‘ ‘);读取execl文件
data=a(1:500,5)%样本数据和测试数据
order=5%输入数据个数
snum=200%训练样本数
step=3%预测步数
input=data(1:snum)
output=data(1+order+step:snum+order+step)
delay=200%训练样本与测试样本间时延
input1=data(1+delay:snum+delay)
output1=date(1+order+delay+step:snum+order+delay+step)
input_train=zeros(snum,order)input_test=zeros(snum,order)
for i=1:snum
input_train(i,:)=data(i:i+order-1)
input_test(i,:)=data(i+delay:i+delay+order-1)
end
%% RBF神经网络预测
%% 网络建立和训练
net=newrb(input_train',output',0.001,100,300,25)
% net=newrbe(input_train',output',100)
% net=newgrnn(input_train',output',10)
%% 网络验证
ty=sim(net,input_train')
errR=abs(output-ty')
ty1=sim(net,input_test')
errR1=abs(output1-ty1')
figure
plot(1:snum,output1,'r*-')
hold on
plot(1:snum,ty1','kx-')
title('三步RBF')
xlabel('数据序号')
ylabel('数据值')
legend('实际值','预测值')
figure
subplot(2,1,1)
stem(1:snum,errR1,'r*')
title('三步RBF')
xlabel('数据序号')
ylabel('绝对误差值')
rbfmean = mean(errR1)
subplot(2,1,2)
stem(1:snum,
abs(errR1./output1),'r*')
title('三步RBF')
xlabel('数据序号')
ylabel('绝对误差率')
rbfpmean = mean(abs(errR1./output1))*100%%
自己对着改一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)