基于SVM神经网络的葡萄酒种类识别部分代码

%% SVM神经网络的数据分类预测----意大利葡萄酒种类识别%% 清空环境变量
close all;
clear;
clc;
format compact;
%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量
load chapter12_wine.mat;% 画出测试数据的box可视化图
figure;
boxplot(wine,'orientation','horizontal','labels',categories);
title('wine数据的box可视化图','FontSize',12);
xlabel('属性值','FontSize',12);
grid on;% 画出测试数据的分维可视化图
figure
subplot(3,5,1);
hold on
for run = 1:178plot(run,wine_labels(run),'*');
end
xlabel('样本','FontSize',10);
ylabel('类别标签','FontSize',10);
title('class','FontSize',10);
for run = 2:14subplot(3,5,run);hold on;str = ['attrib ',num2str(run-1)];for i = 1:178plot(i,wine(i,run-1),'*');endxlabel('样本','FontSize',10);ylabel('属性值','FontSize',10);title(str,'FontSize',10);
end% 选定训练集和测试集% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集
train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集
test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];%% 数据预处理
% 数据预处理,将训练集和测试集归一化到[0,1]区间[mtrain,ntrain] = size(train_wine);
[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];
% mapminmax为MATLAB自带的归一化函数
[dataset_scale,ps] = mapminmax(dataset',0,1);
dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );
%% SVM网络训练
model = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1');%% SVM网络预测
[predict_label, accuracy] = svmpredict(test_wine_labels, test_wine, model);%% 结果分析% 测试集的实际分类和预测分类图
% 通过图可以看出只有一个测试样本是被错分的
figure;
hold on;
plot(test_wine_labels,'o');
plot(predict_label,'r*');
xlabel('测试集样本','FontSize',12);
ylabel('类别标签','FontSize',12);
legend('实际测试集分类','预测测试集分类');
title('测试集的实际分类和预测分类图','FontSize',12);
grid on;

 基于LVQ神经网络的乳腺肿瘤诊断分类 部分代码

%% LVQ神经网络的分类——乳腺肿瘤诊断%% 清空环境变量
clear all
clc
warning off
%% 导入数据
load data.mat
a=randperm(569);
Train=data(a(1:500),:);
Test=data(a(501:end),:);
% 训练数据
P_train=Train(:,3:end)';
Tc_train=Train(:,2)';
T_train=ind2vec(Tc_train);
% 测试数据
P_test=Test(:,3:end)';
Tc_test=Test(:,2)';
%% K-fold交叉验证确定最佳神经元个数
k_fold=5;
Indices=crossvalind('Kfold',size(P_train,2),k_fold);
error_min=10e10;
best_number=1;
best_input=[];
best_output=[];
best_train_set_index=[];
best_validation_set_index=[];
h=waitbar(0,'正在寻找最佳神经元个数.....');
for i=1:k_fold% 验证集标号validation_set_index=(Indices==i);% 训练集标号train_set_index=~validation_set_index;% 验证集validation_set_input=P_train(:,validation_set_index);validation_set_output=T_train(:,validation_set_index);% 训练集train_set_input=P_train(:,train_set_index);train_set_output=T_train(:,train_set_index);for number=10:30count_B_train=length(find(Tc_train(:,train_set_index)==1));count_M_train=length(find(Tc_train(:,train_set_index)==2));rate_B=count_B_train/length(find(train_set_index==1));rate_M=count_M_train/length(find(train_set_index==1));net=newlvq(minmax(train_set_input),number,[rate_B rate_M]);% 设置网络参数net.trainParam.epochs=1000;net.trainParam.show=10;net.trainParam.lr=0.1;net.trainParam.goal=0.1;% 训练网络net=train(net,train_set_input,train_set_output);waitbar(((i-1)*21+number)/114,h);%% 仿真测试T_sim=sim(net,validation_set_input);Tc_sim=vec2ind(T_sim);error=length(find(Tc_sim~=Tc_train(:,validation_set_index)));if error<error_minerror_min=error;best_number=number;best_input=train_set_input;best_output=train_set_output;best_train_set_index=train_set_index;best_validation_set_index=validation_set_index;endend
end
disp(['经过交叉验证,得到的最佳神经元个数为:' num2str(best_number)]);
close(h);
%% 创建网络
count_B_train=length(find(Tc_train(:,best_train_set_index)==1));
count_M_train=length(find(Tc_train(:,best_train_set_index)==2));
rate_B=count_B_train/length(find(train_set_index==1));
rate_M=count_M_train/length(find(train_set_index==1));
net=newlvq(minmax(best_input),best_number,[rate_B rate_M]);
% 设置网络参数
net.trainParam.epochs=1000;
net.trainParam.show=10;
net.trainParam.lr=0.1;
net.trainParam.goal=0.1;
%% 训练网络
net=train(net,best_input,best_output);
%% 仿真测试
T_sim=sim(net,P_test);
Tc_sim=vec2ind(T_sim);
result=[Tc_sim;Tc_test]
%% 结果显示
total_B=length(find(data(:,2)==1));
total_M=length(find(data(:,2)==2));
count_B_validation=length(find(Tc_train(:,best_validation_set_index)==1));
count_M_validation=length(find(Tc_train(:,best_validation_set_index)==2));
number_B=length(find(Tc_test==1));
number_M=length(find(Tc_test==2));
number_B_sim=length(find(Tc_sim==1 & Tc_test==1));
number_M_sim=length(find(Tc_sim==2 &Tc_test==2));
disp(['病例总数:' num2str(569)...'  良性:' num2str(total_B)...'  恶性:' num2str(total_M)]);
disp(['训练集病例总数:' num2str(length(find(best_train_set_index==1)))...'  良性:' num2str(count_B_train)...'  恶性:' num2str(count_M_train)]);
disp(['验证集病例总数:' num2str(length(find(best_validation_set_index==1)))...'  良性:' num2str(count_B_validation)...'  恶性:' num2str(count_M_validation)]);
disp(['测试集病例总数:' num2str(69)...'  良性:' num2str(number_B)...'  恶性:' num2str(number_M)]);
disp(['良性乳腺肿瘤确诊:' num2str(number_B_sim)...'  误诊:' num2str(number_B-number_B_sim)...'  确诊率p1=' num2str(number_B_sim/number_B*100) '%']);
disp(['恶性乳腺肿瘤确诊:' num2str(number_M_sim)...'  误诊:' num2str(number_M-number_M_sim)...'  确诊率p2=' num2str(number_M_sim/number_M*100) '%']);

 经过交叉验证,得到的最佳神经元个数为:11
result =
  列 1 至 15
     1     1     2     2     2     1     2     1     1     1     2     2     1     1     1
     1     1     2     1     2     1     2     2     1     1     2     2     1     2     1
  列 16 至 30
     1     1     1     1     2     1     1     1     1     2     2     1     1     2     1
     1     1     2     1     2     1     1     2     1     2     1     1     1     2     2
  列 31 至 45
     1     1     1     1     2     1     1     1     1     2     2     1     2     1     2
     2     1     1     1     2     1     1     1     1     2     2     1     2     1     2
  列 46 至 60
     2     1     2     1     1     1     1     1     2     2     1     1     2     2     2
     2     1     2     1     1     1     1     1     2     2     1     2     2     2     2
  列 61 至 69
     1     1     1     1     1     2     1     1     1
     1     1     1     1     1     2     1     1     1
病例总数:569  良性:357  恶性:212
训练集病例总数:400  良性:256  恶性:144
验证集病例总数:100  良性:60  恶性:40
测试集病例总数:69  良性:41  恶性:28
良性乳腺肿瘤确诊:39  误诊:2  确诊率p1=95.122%
恶性乳腺肿瘤确诊:21  误诊:7  确诊率p2=75%

基于模糊神经网络的嘉陵江水质评价代码

%% 清空环境变量
clc
clear%% 参数初始化
xite=0.001;
alfa=0.05;%网络节点
I=6;   %输入节点数
M=12;  %隐含节点数
O=1;   %输出节点数%系数初始化
p0=0.3*ones(M,1);p0_1=p0;p0_2=p0_1;
p1=0.3*ones(M,1);p1_1=p1;p1_2=p1_1;
p2=0.3*ones(M,1);p2_1=p2;p2_2=p2_1;
p3=0.3*ones(M,1);p3_1=p3;p3_2=p3_1;
p4=0.3*ones(M,1);p4_1=p4;p4_2=p4_1;
p5=0.3*ones(M,1);p5_1=p5;p5_2=p5_1;
p6=0.3*ones(M,1);p6_1=p6;p6_2=p6_1;%参数初始化
c=1+rands(M,I);c_1=c;c_2=c_1;
b=1+rands(M,I);b_1=b;b_2=b_1;maxgen=100; %进化次数%网络测试数据,并对数据归一化
load data1 input_train output_train input_test output_test%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
[n,m]=size(input_train);%% 网络训练
%循环开始,进化网络
for iii=1:maxgeniiifor k=1:m        x=inputn(:,k);%输出层结算for i=1:Ifor j=1:Mu(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i));endend%模糊规则计算for i=1:Mw(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i);end    addw=sum(w);for i=1:Myi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6);endaddyw=yi*w';%网络预测计算yn(k)=addyw/addw;e(k)=outputn(k)-yn(k);%计算p的变化值d_p=zeros(M,1);d_p=xite*e(k)*w./addw;d_p=d_p';%计算b变化值d_b=0*b_1;for i=1:Mfor j=1:Id_b(i,j)=xite*e(k)*(yi(i)*addw-addyw)*(x(j)-c(i,j))^2*w(i)/(b(i,j)^2*addw^2);endend  %更新c变化值for i=1:Mfor j=1:Id_c(i,j)=xite*e(k)*(yi(i)*addw-addyw)*2*(x(j)-c(i,j))*w(i)/(b(i,j)*addw^2);endendp0=p0_1+ d_p+alfa*(p0_1-p0_2);p1=p1_1+ d_p*x(1)+alfa*(p1_1-p1_2);p2=p2_1+ d_p*x(2)+alfa*(p2_1-p2_2);p3=p3_1+ d_p*x(3)+alfa*(p3_1-p3_2);p4=p4_1+ d_p*x(4)+alfa*(p4_1-p4_2);p5=p5_1+ d_p*x(5)+alfa*(p5_1-p5_2);p6=p6_1+ d_p*x(6)+alfa*(p6_1-p6_2);b=b_1+d_b+alfa*(b_1-b_2);      c=c_1+d_c+alfa*(c_1-c_2);p0_2=p0_1;p0_1=p0;p1_2=p1_1;p1_1=p1;p2_2=p2_1;p2_1=p2;p3_2=p3_1;p3_1=p3;p4_2=p4_1;p4_1=p4;p5_2=p5_1;p5_1=p5;p6_2=p6_1;p6_1=p6;c_2=c_1;c_1=c;   b_2=b_1;b_1=b;end   E(iii)=sum(abs(e));endfigure(1);
plot(outputn,'r')
hold on
plot(yn,'b')
hold on
plot(outputn-yn,'g');
legend('实际输出','预测输出','误差','fontsize',12)
title('训练数据预测','fontsize',12)
xlabel('样本序号','fontsize',12)
ylabel('水质等级','fontsize',12)%% 网络预测
%数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
[n,m]=size(inputn_test)
for k=1:mx=inputn_test(:,k);%计算输出中间层for i=1:Ifor j=1:Mu(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i));endendfor i=1:Mw(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i);endaddw=0;for i=1:M  addw=addw+w(i);endfor i=1:M  yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6);        endaddyw=0;        for i=1:M    addyw=addyw+yi(i)*w(i);        end%计算输出yc(k)=addyw/addw;
end%预测结果反归一化
test_simu=mapminmax('reverse',yc,outputps);
%作图
figure(2)
plot(output_test,'r')
hold on
plot(test_simu,'b')
hold on
plot(test_simu-output_test,'g')
legend('实际输出','预测输出','误差','fontsize',12)
title('测试数据预测','fontsize',12)
xlabel('样本序号','fontsize',12)
ylabel('水质等级','fontsize',12)%% 嘉陵江实际水质预测
load  data2 hgsc gjhy dxg
%-----------------------------------红工水厂-----------------------------------
zssz=hgsc;
%数据归一化
inputn_test =mapminmax('apply',zssz,inputps);
[n,m]=size(zssz);for k=1:1:mx=inputn_test(:,k);%计算输出中间层for i=1:Ifor j=1:Mu(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i));endendfor i=1:Mw(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i);endaddw=0;for i=1:M   addw=addw+w(i);endfor i=1:M   yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6);        endaddyw=0;        for i=1:M    addyw=addyw+yi(i)*w(i);        end%计算输出szzb(k)=addyw/addw;
end
szzbz1=mapminmax('reverse',szzb,outputps);for i=1:mif szzbz1(i)<=1.5szpj1(i)=1;elseif szzbz1(i)>1.5&&szzbz1(i)<=2.5szpj1(i)=2;elseif szzbz1(i)>2.5&&szzbz1(i)<=3.5szpj1(i)=3;elseif szzbz1(i)>3.5&&szzbz1(i)<=4.5szpj1(i)=4;elseszpj1(i)=5;end
end
% %-----------------------------------高家花园-----------------------------------
zssz=gjhy;
inputn_test =mapminmax('apply',zssz,inputps);
[n,m]=size(zssz);for k=1:1:mx=inputn_test(:,k);%计算输出中间层for i=1:Ifor j=1:Mu(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i));endendfor i=1:Mw(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i);endaddw=0;for i=1:M   addw=addw+w(i);endfor i=1:M   yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6);        endaddyw=0;        for i=1:M    addyw=addyw+yi(i)*w(i);        end%计算输出szzb(k)=addyw/addw;
end
szzbz2=mapminmax('reverse',szzb,outputps);for i=1:mif szzbz2(i)<=1.5szpj2(i)=1;elseif szzbz2(i)>1.5&&szzbz2(i)<=2.5szpj2(i)=2;elseif szzbz2(i)>2.5&&szzbz2(i)<=3.5szpj2(i)=3;elseif szzbz2(i)>3.5&&szzbz2(i)<=4.5szpj2(i)=4;elseszpj2(i)=5;end
end
% %-----------------------------------大溪沟水厂-----------------------------------
zssz=dxg;
inputn_test =mapminmax('apply',zssz,inputps);
[n,m]=size(zssz);for k=1:1:mx=inputn_test(:,k);%计算输出中间层for i=1:Ifor j=1:Mu(i,j)=exp(-(x(i)-c(j,i))^2/b(j,i));endendfor i=1:Mw(i)=u(1,i)*u(2,i)*u(3,i)*u(4,i)*u(5,i)*u(6,i);endaddw=0;for i=1:M   addw=addw+w(i);endfor i=1:M   yi(i)=p0_1(i)+p1_1(i)*x(1)+p2_1(i)*x(2)+p3_1(i)*x(3)+p4_1(i)*x(4)+p5_1(i)*x(5)+p6_1(i)*x(6);        endaddyw=0;        for i=1:M    addyw=addyw+yi(i)*w(i);        end%计算输出szzb(k)=addyw/addw;
end
szzbz3=mapminmax('reverse',szzb,outputps);for i=1:mif szzbz3(i)<=1.5szpj3(i)=1;elseif szzbz3(i)>1.5&&szzbz3(i)<=2.5szpj3(i)=2;elseif szzbz3(i)>2.5&&szzbz3(i)<=3.5szpj3(i)=3;elseif szzbz3(i)>3.5&&szzbz3(i)<=4.5szpj3(i)=4;elseszpj3(i)=5;end
endfigure(3)
plot(szzbz1,'o-r')
hold on
plot(szzbz2,'*-g')
hold on
plot(szzbz3,'*:b')
xlabel('时间','fontsize',12)
ylabel('预测水质','fontsize',12)
legend('红工水厂','高家花园水厂','大溪沟水厂','fontsize',12)

数学建模按赛题划分常用代码相关推荐

  1. 美国大学生数学建模竞赛赛题题型分类

    美国大学生数学建模竞赛赛题题型分类 美赛赛题应用模型 • 运筹优化类问题(规划模型.排队论.神经网络.启发式算法) • 评价类问题(层次分析法.聚类分析法.主成分分析评价法等) • 机理分析类问题(回 ...

  2. 2020“数维杯”国际大学生数学建模竞赛赛题分析

    2020"数维杯"国际大学生数学建模竞赛赛题分析 1.ABCD赛题分析 1.1A题翻译:中国螺纹钢需求预测 1.2B题翻译:股票价格的混沌模型 1.3C题翻译:城市道路最佳除雪方案 ...

  3. 2023年美国大学生数学建模竞赛赛题发布【英文原文 中文翻译】

    英文原文 & 中文翻译 2023年美国大学生数学建模竞赛赛题发布! 2023年美国大学生数学建模竞赛赛题已发布在公众号~ 检查文件格式 美赛论文提交有严格的格式,例如:2212345(队伍控制 ...

  4. 美国大学生数学建模竞赛赛题特点

    美国大学生数学建模竞赛赛题特点 • 赛题灵活度高,内容广泛: 反恐.防灾.环境.健康医疗.交通.新能源等等: • 开放性大,评价类问题多且复杂: • 离散型优化问题多(除A题): 如:2016B太空碎 ...

  5. 2021年 美国大学生数学建模竞赛 赛题发布!【英文原文 中文翻译】

    原文链接[微信公众号:校苑数模   ]:2021年美国大学生数学建模竞赛赛题发布! 原文链接[微信公众号:校苑服务号]:[中文翻译]2021年美国大学生数学建模竞赛赛题! [2021美赛赛题(英文原文 ...

  6. 美国大学生数学建模竞赛赛题涉及领域

    美国大学生数学建模竞赛赛题涉及领域 • 工程: 2018A多跳HF无限电传播,2016A浴缸的水温模型 • 交通: 2017B高速收费站合并,2018D机场安检站优化 • 救灾: 2019B无人机:空 ...

  7. 2022年全国大学生数学建模竞赛赛题B组解题参考+代码

    题目 获取题目方式: 2022年全国大学生数学建模竞赛题目 代码思路获取方式,关注博主竞赛专栏. B 题 无人机遂行编队飞行中的纯方位无源定位 无人机集群在遂行编队飞行时,为避免外界干扰,应尽可能保持 ...

  8. 2023电工杯数学建模竞赛B题思路解析+代码+论文

    电工杯B题 人工智能对大学生学习影响的评价 人工智能简称AI,最初由麦卡锡.明斯基等科学家于1956年在美国达特茅斯学院开会研讨时提出. 2016年,人工智能AlphaGo 4:1战胜韩国围棋高手李世 ...

  9. 2023五一杯数学建模竞赛ABC题思路解析+代码+论文

    AB题见文末,下面是C C题:"双碳"目标下低碳建筑研究 "双碳"即碳达峰与碳中和的简称,我国力争2030年前实现碳达峰,2060年前实现碳中和."双 ...

  10. 2023电工杯数学建模竞赛A题思路解析+代码+论文

    电工杯A题:电采暖负荷参与电力系统功率调节的技术经济分析 建设以新能源为主体的新型电力系统是应对全球气候变化挑战的重要举措.高比例新能源接入导致电力系统调节能力稀缺,亟需开发新的调节资源,如火电深度调 ...

最新文章

  1. 新科技快速指南系列之“5G”:历史、现在与未来
  2. python中语法错误-Python3 错误和异常
  3. python祝福祖国代码_国际文交所:9月17日-10月15日《祝福祖国信卡》《澳门爱与祝愿套票》《北京精神封》3个提货转仓公告...
  4. zigbee看门狗综合实验_2.5KW风光互补发电教学实验系统,风能太阳能发电实训装置_搜狐汽车...
  5. QTableWidget去掉默认行号
  6. java是如何写入文件的
  7. 五、Hive数据类型和简单使用
  8. 6张脑图系统讲透python爬虫和数据分析、数据挖掘
  9. mac与phy如何实现网络自适应
  10. Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
  11. django 引入同目录下py文件_第 05 篇:Django 的接客之道
  12. 菲克扩散(第一)定律【Fick's (First) Law of Binary Diffussion】
  13. scratch3 打幽灵游戏
  14. 002649:bootdo项目改造计划
  15. 渗透测试中常用的在线工具和网站总结
  16. 网易开源分布式存储系统 Curve,性能彪悍
  17. 我们过度解读了鲁迅了么?
  18. 降薪潮、裁员潮,普通IT数据人的30岁没电视剧里那么容易
  19. MIUI12 安卓12刷面具root 理论适合所有小米机型和系统版本 小米10实测 小米11实测
  20. 用分治法查找数组元素的最大值和最小值

热门文章

  1. 图解TCPIP 学习笔记(一)
  2. PLSQL Developer安装破解 ,以及连接配置
  3. 读书笔记:普林斯顿微积分读本
  4. linux音频alsa-uda134x驱动分析之一(over-view)
  5. Excel之数据透视表
  6. 反编译工具Reflector下载(集成两个常用.net插件,FileGenerator和FileDisassembler)
  7. Thea For SketchUp破解版|Thea For SketchUp v2.1.909.1853中文破解版下载(附安装教程)
  8. JAVA面试宝典2018-2019
  9. 图片完整检查linux,Linux 下的免费图片查看器
  10. 按键精灵打怪学习-窗口绑定技能