%% I. 清空环境变量
clear all
clc
%% II. 训练集/测试集产生
%%
% 1. 导入数据
load water_data.mat
%%
% 2. 数据归一化
attributes = mapminmax(attributes);
%%
% 3. 训练集和测试集划分
% 训练集——35个样本
P_train = attributes(:,1:35);
……
……
……
(省略部分代码,完整代码可以下载)
……
……
……
% 测试集——4个样本
P_test = attributes(:,36:end);
……
……
……
(省略部分代码,完整代码可以下载)
……
……
……
%% III. 竞争神经网络创建、训练及仿真测试
%%
% 1. 创建网络
net = newc(minmax(P_train),4,0.01,0.01); %因为结果分成四类,所以这里隐含神经元设置为4,0.01分别是是权值和阈值的学习率
%单独执行一下minmax(P_train)发现最大值是1,最小值是-1,与P_train最大值最小值符合。
% 输入 w=net.iw{1,1}; 看一下 连接权值 平均值为0 四个神经元六个特征 4*6矩阵元素全部为0
%输入 b=net.b{1} 看一下 连接阈值 edit initcon rows=4
%134行看一下 x的值是不是我们算的值
%%
% 2. 设置训练参数
net.trainParam.epochs = 500; %训练步数
……
……
……
(省略部分代码,完整代码可以下载)
……
……
……
%%
% 3. 训练网络
net = train(net,P_train);
%%
% 4. 仿真测试
% 训练集
t_sim_compet_1 = sim(net,P_train);
% 测试集
……
……
……
(省略部分代码,完整代码可以下载)
……
……
……
T_sim_compet_2 = vec2ind(t_sim_compet_2); % vec2ind函数将稀疏矩阵转换成行向量或者列向量,T-train和classes没有用到,体现了无导师学习的过程
%运行一下 77 78 行看一下结果 哪几个神经元决定了每一个类
%% IV. SOFM神经网络创建、训练及仿真测试
%%
% 1. 创建网络
net = newsom(P_train,[4 4]);
%%
% 2. 设置训练参数
net.trainParam.epochs = 200;
%%
% 3. 训练网络
net = train(net,P_train);
%%
% 4. 仿真测试
% 训练集
t_sim_sofm_1 = sim(net,P_train);
……
……
……
(省略部分代码,完整代码可以下载)
……
……
……
% 测试集
t_sim_sofm_2 = sim(net,P_test);
T_sim_sofm_2 = vec2ind(t_sim_sofm_2);
%% V. 结果对比
%%
% 1. 竞争神经网络
result_compet_1 = [T_train’ T_sim_compet_1’]
result_compet_2 = [T_test’ T_sim_compet_2’]
% 2. SOFM神经网络
result_sofm_1 = [T_train’ T_sim_sofm_1’]
……
……
……
(省略部分代码,完整代码可以下载)
……
……
……
(完整代码及资料下载地址)
10 竞争神经网络与SOM神经网络matlab参考程序.zip-CSDN下载 https://download.csdn.net/download/weixin_44356700/11859473
新上线了一门视频课程——二十八天精通matlab基础编程-在线****-CSDN学院 https://edu.csdn.net/course/detail/24947
|
请发表评论