%%清空环境变量 clear all clc warning off %%声明全局变量
global P train T train P test T test mint maxt S si S=30; s1=50; %%导入数据 load data.mat a=randperm(569); Train=data(a(1:500),:); Test=data(a(501:end),:); %训练数据
P_train=Train(:,3:end)'; T_train=Train 仁 2): %测试数据
P_test=Test(:,3:end)*; T_test=Test(:,2)'; %显示实验条件
total_B=length(find(data(:,2)==1)); total_M=length(find(data(:,2)==2)); count_B=length(find(T_train==1)); count_M=length(find(T_train==2)); number_B=length(find(T_test==1)); number_M=length(find(T_test==2)); disp(,实验条件为:J;
disp(['病例总数:fnum2str(569)...
,良性:*num2str(total_B)... ,恶性:,num2str(total_M)]);
disp(['训练集病例总数:*num2str(500)...
,良性:'num2str(count_B)... ,恶性:’num2str(count_M)]);
disp(['测试集病例总数:*num2str(69)...
,良性:Sum2str(number_B)... ,恶性:Sum2str(number_M)]);
%%数据归一化
[P_train,minp,maxp,T_train,mint,maxt]=pre mnm x(P_train,T_train); P_test=tramnmx(P_test,minp,maxp); %%创建单BP网络 t=cputime;
net_bp=n ewff(minmax(P_train),[s1,1],{'ta nsigTpurelin 'J/trainlm'); %设置训练参数
net_bp.trai nParam.epochs=1000; n et_bp.trainParam.show=10; n et_bp.trai nParam.goal=0.1; n et_bp.trainParam.lr=0.1;
n et_bp.trai nParam.showwindow=0; %%训练单BP网络
n et_bp=train(net_bp,P_train,T_train); %%仿真测试单BP网络
tn _bp_sim=sim( net_bp,P_test); %反归一化
T_bp_sim=postmnmx(tn_bp_sim,mint,maxt); e=cputime-t;
T_bp_s i m (T_bp_si m > 1.5)=2; T_bp_si m (T_bp_si m< 1.5)=1; result_bp=[T_bp_sim* T_test*]; %%结果显示(单BP网络)
number_B_sim=length(find仃_bp_sim==1 & T_test==1)); number_M_sim=length(find(T_bp_sim==2 &T_test==2)); dispC(1)BP网络的测试结果为:’);
disp(['良性乳腺肿瘤确诊:’num2str(number_B_sim)...
'误诊:*num2str(number_B?number_B_sim)...
,确诊率 p1 ='num2str(number_B_sim/number_B*1 OO)'%1]);
disp([*恶性乳腺肿瘤确诊:,num2str(number_M_sim)...
'误诊:,num2str(number_M-number_M_sim)...
,确诊率 p2='num2str(number_M_sim/number_l\\/ri 00)'%']);
disp『建模时间为:'num2str(e) *s']); %%遗传算法优化 popu=20;
bounds=ones(S,1 )*[0,1 ]; %产生初始种群
% initPop=crtbp(popu,S); initPop=randint(popu,S,[0 1]); %计算初始种群适应度 initFit=zeros(popu,1); for i=1:size(initPop,1)
in itFit(i)=de_code(initPop(i,:));
end
initPop=[initPop initFit]; gen=100; %优化计算
[X,EndPop,BPop,Trace]=ga(bounds,'fitness1,[],initPop,[1e-6 1 0],'maxGenTerm',...
gen/normGeomSelecfjO.OG/simpleXover'^/boundaryMutation',^ gen 3]); [m,n]=find(X==1);
disp『优化筛选后的输入自变量编号为 %绘制适应度函数进化曲线 figure
plot 仃 race(:,1 ),Trace(:,3),'r:') hold on
plot(Trace(:,1),Trace(:,2),'b') xlabe*进化代数) ylabel('适应度函数') title('适应度函数进化曲线')
legend('平均适应度函数T最佳适应度函数') xlim([1 gen])
%%新训练集/测试集数据提取 p_train=zeros(size( n,2),size(T_train,2)); p_test=zeros(size(n52)3size(T_test,2)); for i=1 :length(n)
p_train(i,:)=P_train(n(i),:); p_test(i,:)=P_test(n(i),:); end t_train=T_train; %%创建优化BP网络 t=cputime;
n et_ga=n ewff(minmax(p_train),[s1,1],fta nsigTpurelin 'J/trainlm'); %训练参数设置
n et_ga.trai nParam.epochs=1000; n et_ga.trai nParam.show=10; n et_ga.trai nParam.goal=0?1; n et_ga.trai nPara m.l r=0.1;
n et_ga.trai nParam?showwinclow=0; %%训练优化BP网络
n et_ga=train(net_ga5p_train3t_train); %%仿真测试优化BP网络 tn_ga_sim=sim(net_ga,p_test); %反归一化
T_ga_sim=postm nmx( tn_ga_sim,mint,maxt); e=cputime-t; T_ga_si m (T_g a_si m > 1.5)=2;
T_g a_s i m (T_g a_s i m < 1.5)=1; result_ga=[T_ga_sim, T_tesf]; %%结果显示(优化BP网络)
number_b_sim=length(find(T_ga_sim==1 & T_test==1));
:Sum2str(n)]);
遗传算法的优化计算—建模自变量降维
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)