function [IW,B,LW,TF,TYPE,train_accuracy] = elmtrain(P_train,T,N,TF,TYPE)
%P_train=train;T=train_label;N=200;TF='sig';TYPE=1;
% P - Input Matrix of Training Set (R*Q)
% T - Output Matrix of Training Set (S*Q)
% N - Number of Hidden Neurons (default = Q)
% TF - Transfer Function:'sig' for Sigmoidal function (default)',sin' for Sine function,'hardlim' for Hardlim function
% TYPE - Regression (0,default) or Classification (1)
% IW - Input Weight Matrix (N*R)
% B - Bias Matrix (N*1)
% LW - Layer Weight Matrix (N*S)
%回归
% [IW,B,LW,TF,TYPE] = elmtrain(P,T,20,'sig',0)
% Y = elmtrain(P,IW,B,LW,TF,TYPE)
% 分类
% [IW,B,LW,TF,TYPE] = elmtrain(P,T,20,'sig',1)
% Y = elmtrain(P,IW,B,LW,TF,TYPE)
% See also ELMPREDICT
%显然在这个程序中elmtrain跟了6个参数,正常情况下nargin=6,但是有些省略的时候,就要用到下面几句程序进行默认赋值
if nargin < 2
error('ELM:Arguments','Not enough input arguments.');
end %输入参数必须大于等于2个,否则无法进行建模,因为至少要有输出输入参数才行
if nargin < 3
N = size(P_train,2); %如果只有输入输出,默认隐含层神经元为样本数
end
if nargin < 4
TF = 'sig';%如果只有输出输入,隐含层神经元数量,默认激活函数为sigmoid函数
end
if nargin < 5
TYPE = 0;%如果没有定义函数的作用,默认为回归拟合
end
% 其中基本上都是在主程序中定义了那几个参数的,所以上面这几句一般用不到。。。。。。。。。
%%%%%%%%%%%%*****************************
if size(P_train,2) ~= size(T,2)
error('ELM:Arguments','The columns of P and T must be same.');
end
%输出样本数量必须与输出样本数量一致。
[R,Q] = size(P_train);%R=2,Q=1900
T1 =T;
if TYPE == 1
T1 = ind2vec(T);
end
%如果定义的是分类,就将训练输出转为向量索引 http://blog.csdn.net/u011314012/article/details/51191006
[S,Q] = size(T1); %S=1,Q=1900
% 随机产生输入权重矩阵,1900*2
IW = rand(N,R) * 2 - 1;
% 随机产生隐层偏置 1900*1
rand('seed',0)
B = rand(N,1);
BiasMatrix = repmat(B,1,Q);
% 计算隐层输出H
tempH = IW * P_train + BiasMatrix;
switch TF
case 'sig'
H = 1 ./ (1 + exp(-tempH));
case 'sin'
H = sin(tempH);
case 'hardlim'
H = hardlim(tempH);
end
% 计算隐层到输出层之间的权重
LW = pinv(H') * T1';
TY=(H'*LW)';
if TYPE == 1
temp_Y=zeros(1,size(TY,2));
for n=1:size(TY,2)
[max_Y,index]=max(TY(:,n));
temp_Y(n)=index;
end
Y_train=temp_Y;
train_accuracy=sum(Y_train==T)/length(T);
end
if TYPE==0
train_accuracy=0;
end
% figure
% plot(Y_train,'*');hold on
% stem(T,'bo');
% legend('实际输出','期望输出')
% title('ELM训练集分类准确率')
end
%出售各类算法优化深度极限学习机代码392503054
%pinv与inv都是用来求矩阵的逆矩阵,但是inv是知道存在逆矩阵的情况下用的
%当不清楚矩阵是否存在逆矩阵的情况时,或者根本不存在逆矩阵,就用PINV来伪逆矩阵
没有合适的资源?快使用搜索试试~ 我知道了~
基于极限学习机的分类预测
共5个文件
m:4个
xlsx:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 121 浏览量
2024-02-26
16:53:12
上传
评论
收藏 13KB RAR 举报
温馨提示
基于MATLAB编程,基于极限学习机的分类预测,代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。
资源推荐
资源详情
资源评论
收起资源包目录
elm.rar (5个子文件)
elmtrain.m 3KB
MSE_RMSE_MBE_MAE.m 361B
elmpredict.m 1KB
main.m 1KB
data.xlsx 12KB
共 5 条
- 1
资源评论
神经网络机器学习智能算法画图绘图
- 粉丝: 2514
- 资源: 618
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功