DEMO


clc; clear; close all; load ..\CFCC_mat\all_data_label.mat % load all_data_label_02.mat %matlab神经网络工具箱权值和阈值每次都是随机初始化的,加上"setdemorandstream(pi)"即可固定随机种子,使其训练结果不变 setdemorandstream(pi);train_y=train_y'; test_y=test_y'; P=size(test_x); w=size(train_x); %%category=26;%26种类别 M=26*10;%测试用样本数 bp_number=80; %隐层神经元个数 % bp_number =round( log( size(train_x,2) )/ log(2) ); input_label_test=zeros(1,M); % output_label=zeros(1,M); %% for j=1:P(1) %P(1)=90input_label_test(j)= find(test_y(:,j)) ; %正确,返回T1中第j列不为0元素的行数end%% %特征值归一化; [input,minI,maxI] = premnmx( train_x') ;%input归一化矩阵,minI,每行最小值,maxI,每行最大值 %for i=10:300 %创建神经网络,隐藏层与输出层对应的传输转移函数分别为"tansig","logsig"%[24,9] net=newff(minmax(input),[bp_number,category],{'tansig' 'logsig'} ,'traingdx'); % 'traingdx' 自适应调整学习速率附加动量因子梯度下降反向传播算法训练函数 net.trainParam.lr=0.001;%学习率 net.trainParam.show=5000;%显示中间结果的周期 net.trainParam.epochs=20000;%最大迭代次数 net.trainParam.goal=0.0001; %神经网络训练的目标误差%%开始训练 net=train(net,input,train_y); %T9x900 save trainNet net minI %%%train trainInput = tramnmx ( train_x' , minI, maxI ) ; TT=sim(net,trainInput);%返回测试样本的输出预测值 error2 = train_y - round(TT); RX=0; for s=1:w(1)if(sum(error2(:,s))==0)RX = RX + 1; endendTrainidentifyrate = RX/(w(1)) %% % 测试数据归一化 test testInput = tramnmx ( test_x' , minI, maxI ) ; RS=sim(net,testInput);%test_input 400xM,每一列为一个样本 RS9x90,9类一共M个样本% U=round(RS); [~,output_label_test] = max(RS,[],1); %返回每列最大值所处行数%% %视图化 % test_labels =input_label_test'; % predict_label=output_label_test';figure; hold on;plot(input_label_test','o'); %test_labels plot(output_label_test','r+');%predict_label xlabel('测试集样本','FontSize',12); ylabel('类别标签','FontSize',12); legend('实际测试集分类','预测测试集分类'); title('测试集的实际分类和预测分类图','FontSize',12); %设置x轴范围和刻度 set(gca,'XLim',[0 260]);%X轴的数据显示范围 set(gca,'XTick',[0:10:260]);%设置要显示坐标刻度 % set(gca,'XTickLabel',[0:1:10]);%给坐标加标签 %设置y轴范围和刻度set(gca,'YLim',[1 26]);%X轴的数据显示范围 set(gca,'YTick',[0:1:26]);%设置要显示坐标刻度 % set(gca,'YTickLabel',[95:1:101]);%给坐标加标签 grid on;%% III 计算准确率c=input_label_test-output_label_test;number=0;error_label_number =1;for i=1:1:Mif(c(1,i)==0)number = number+1;end % if (abs(c(1,i))==1 ) %不等于 % error_label(error_label_number,1)= i; %误差为1错误标签位置 % error_label_number = error_label_number+1; % end %if (abs(c(1,i))~=0 ) %不等于error_location(error_label_number,1)= i; %误差为1错误标签位置error_label_number = error_label_number+1;endendaccuracy = number/M save error_label.mat error_location%% data =[input_label_test',output_label_test']; data =transform(data); figure; hold on; plot(data(:,1)','o'); %test_labels plot(data(:,2)','r+');%predict_label xlabel('测试集样本','FontSize',12); ylabel('类别标签','FontSize',12); legend('实际测试集分类','预测测试集分类'); title('测试集的实际分类和预测分类图','FontSize',12); %设置x轴范围和刻度 set(gca,'XLim',[0 260]);%X轴的数据显示范围 set(gca,'XTick',[0:10:260]);%设置要显示坐标刻度 % set(gca,'XTickLabel',[0:1:10]);%给坐标加标签 %设置y轴范围和刻度set(gca,'YLim',[1 26]);%X轴的数据显示范围 set(gca,'YTick',[0:1:26]);%设置要显示坐标刻度 % set(gca,'YTickLabel',[95:1:101]);%给坐标加标签 grid on;%% data =[input_label_test',output_label_test']; data =data(:,1)-data(:,2); AA=zeros(26,1) for i=1:26number=0;for j=1:10if data( (i-1)*10+j ,1 )==0 number=number+1;end endAA(i,1)=number; end%%confusion_matrix1( output_label_test,input_label_test)

  FUNCTION  

confusion_matrix1 混淆矩阵画图
function confusion_matrix1(act1, det1)
%act1为真实的标签,det1为预测标签
%输入的是行向量
%https://blog.csdn.net/xuyingjie125/article/details/78417760
[mat, order] = confusionmat(act1, det1);
%confusionmat用来构建混淆矩阵,mat返回混淆矩阵,order返回每个变量所在的类
%mat(i,j)表示训练集中i类在测试集中被分到j类的个数
k = max(order);   %k为分类的个数imagesc(mat); %imagesc函数将矩阵mat的元素数值按大小转化为不同颜色,并在坐标轴对应位置以这种颜色染色
colormap(flipud(gray)); %转换成灰度图
%colormap函数是用来设定和获取当前色图的函数
%flipud是矩阵倒转命令,gray是matlab内置矩阵
%gray()会返回M×3的矩阵
title('混淆矩阵');
textStrings = num2str(mat(:),'%d');
%num2str(x,precision)把数组x转换成字符串形式表示,precision为精度
textStrings = strtrim(cellstr(textStrings));
%cellstr是将字符数组转换成cell类型
%裁切字符串的开头和尾部的空格,制表,回车符%meshgrid是MATLAB中用于生成网格采样点的函数
[x,y] = meshgrid(1:k);
hStrings = text(x(:),y(:),textStrings(:),'HorizontalAlignment','center');
%text函数表示对文字string定位于用坐标轴指定的位置,且对指定的属性进行设置
%HorizontalAlignment表示文字水平方向的对齐方式,center表示文本外框中间对齐
midValue = mean(get(gca,'CLim')); 
%get(gca,'CLim')获取当前的坐标轴句柄,并设置它的CLim(ColorLimit)值,用来使不同的图使用相同的色标
%mean函数返回均值,使得midValue获得图色标的均值0.5000
textColors = repmat(mat(:) > midValue,1,3);
%将矩阵[mat(:)>midValue]复制1×3块的矢量(颜色值必须为包含3个元素的数值矢量)
%把矩阵[mat(:)>midValue]作为矩阵textColors的元素
%B=repmat(A,M,N)这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(M×N)的矩阵B中,
%B矩阵的大小由M×N及A矩阵的内容决定,
%如果A是一个3×4×5的矩阵,则矩阵B变为6×12×5set(hStrings,{'Color'},num2cell(textColors,2));
%n=1表示把每列的所有行转换为cell,n=2表示把每行的所有列转换为cell,将结构阵列转换成异质阵列
%然后set去重后放在hStrings%根据自己的分类要求更改类别标签set(gca,'XTick',1:26,'XTickLabel',{'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26'},'YTick',1:26,'YTickLabel',{'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26'});
% --------------------- 
% 浣滆?锛歴undreamoon 
% 鏉ユ簮锛欳SDN 
% 鍘熸枃锛歨ttps://blog.csdn.net/sundreamoon/article/details/79958207 
% 鐗堟潈澹版槑锛氭湰鏂囦负鍗氫富鍘熷垱鏂囩珷锛岃浆杞借闄勪笂鍗氭枃閾炬帴锛?

  相关系数 code

%% 相关系数
%% V. 性能评价
%%
% 1. 相对误差error
input_test_label = actual_label;
error = abs(predict_label - input_test_label)./input_test_label;
[N,~]=size(input_test_label);
%%
% 2. 决定系数R^2
R2 = (N * sum(predict_label .* input_test_label) - sum(predict_label) * sum(input_test_label))^2 / ((N * sum((predict_label).^2) - (sum(predict_label))^2) * (N * sum((input_test_label).^2) - (sum(input_test_label))^2)); %%
% 3. 结果对比
result = [input_test_label' predict_label' error']%% VI. 绘图
figure
plot(1:N,input_test_label,'b:*',1:N,predict_label,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('标签值')
string = {'测试集预测结果对比';['R^2=' num2str(R2)]};
title(string)

  SVM code

%% SVM神经网络的数据分类预测----意大利葡萄酒种类识别
% 
% 
% <html>
% <table border="0" width="600px" id="table1">	<tr>		<td><b><font size="2">该案例作者申明:</font></b></td>	</tr>	<tr>		<td><span class="comment"><font size="2">1:本人长期驻扎在此<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html"><font color="#0000FF">板块</font></a>里,对<a target="_blank" href="http://www.ilovematlab.cn/thread-48362-1-1.html"><font color="#0000FF">该案例</font></a>提问,做到有问必答。</font></span></td></tr><tr>	<td><span class="comment"><font size="2">2:此案例有配套的教学视频,配套的完整可运行Matlab程序。</font></span></td>	</tr>	<tr>		<td><span class="comment"><font size="2">		3:以下内容为该案例的部分内容(约占该案例完整内容的1/10)。</font></span></td>	</tr>		<tr>		<td><span class="comment"><font size="2">		4:此案例为原创案例,转载请注明出处(<a target="_blank" href="http://www.ilovematlab.cn/">Matlab中文论坛</a>,<a target="_blank" href="http://www.ilovematlab.cn/forum-158-1.html">《Matlab神经网络30个案例分析》</a>)。</font></span></td>	</tr>		<tr>		<td><span class="comment"><font size="2">		5:若此案例碰巧与您的研究有关联,我们欢迎您提意见,要求等,我们考虑后可以加在案例里。</font></span></td>	</tr>		<tr>		<td><span class="comment"><font size="2">		6:您看到的以下内容为初稿,书籍的实际内容可能有少许出入,以书籍实际发行内容为准。</font></span></td>	</tr><tr>		<td><span class="comment"><font size="2">		7:此书其他常见问题、预定方式等,<a target="_blank" href="http://www.ilovematlab.cn/thread-47939-1-1.html">请点击这里</a>。</font></span></td>	</tr></table>
% </html>
% %% 清空环境变量
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 , pred] = 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;%%
% 
% <html>
% <table align="center" >	<tr>		<td align="center"><font size="2">版权所有:</font><a
% href="http://www.ilovematlab.cn/">Matlab中文论坛</a>   <script
% src="http://s3.cnzz.com/stat.php?id=971931&web_id=971931&show=pic" language="JavaScript" ></script> </td>	</tr></table>
% </html>
% 

   III  CNN

main

%%%  matlab实现LeNet-5
%%%  作者:xd.wp
%%%  时间:2016.10.22  14:29
%% 程序说明
%          1、池化(pooling)采用平均2*2
%          2、网络结点数说明:
%                           输入层:28*28
%                           第一层:24*24(卷积)*20
%                           tanh
%                           第二层:12*12(pooling)*20
%                           第三层:100(全连接)
%                           第四层:10(softmax)
%          3、网络训练部分采用800个样本,检验部分采用100个样本
clear all;clc;
%% 网络初始化
layer_c1_num=20;
layer_s1_num=20;
layer_f1_num=100;
layer_output_num=26;
%权值调整步进
yita=0.01;
%bias初始化
bias_c1=(2*rand(1,20)-ones(1,20))/sqrt(20);
bias_f1=(2*rand(1,100)-ones(1,100))/sqrt(20);
%卷积核初始化
[kernel_c1,kernel_f1]=init_kernel(layer_c1_num,layer_f1_num);
%pooling核初始化
pooling_a=ones(2,2)/4;
%全连接层的权值
weight_f1=(2*rand(20,100)-ones(20,100))/sqrt(20);
weight_output=(2*rand(100,layer_output_num)-ones(100,layer_output_num))/sqrt(100);
disp('网络初始化完成......');
%% 开始网络训练
disp('开始网络训练......');
for iter=1:10
for n=1:100for m=1:26%读取样本
%         train_data=imread(strcat(num2str(m),'_',num2str(n),'.bmp'));path = ['C:\Users\Administrator\Desktop\流程\时域频域图\figure_2\figure_28_28\',[num2str(m),'_',num2str(n)],'.bmp'];%如0_1~0_10train_data=imread(path);train_data=double(train_data);% 去均值
%       train_data=wipe_off_average(train_data);%前向传递,进入卷积层1for k=1:layer_c1_numstate_c1(:,:,k)=convolution(train_data,kernel_c1(:,:,k));%进入激励函数state_c1(:,:,k)=tanh(state_c1(:,:,k)+bias_c1(1,k));%进入pooling1state_s1(:,:,k)=pooling(state_c1(:,:,k),pooling_a);end%进入f1层[state_f1_pre,state_f1_temp]=convolution_f1(state_s1,kernel_f1,weight_f1);%进入激励函数for nn=1:layer_f1_numstate_f1(1,nn)=tanh(state_f1_pre(:,:,nn)+bias_f1(1,nn));end%进入softmax层for nn=1:layer_output_numoutput(1,nn)=exp(state_f1*weight_output(:,nn))/sum(exp(state_f1*weight_output));end%% 误差计算部分Error_cost=-output(1,m);
%         if (Error_cost<-0.98)
%             break;
%         end%% 参数调整部分[kernel_c1,kernel_f1,weight_f1,weight_output,bias_c1,bias_f1]=CNN_upweight(yita,Error_cost,m-1,train_data,...state_c1,state_s1,...state_f1,state_f1_temp,...output,...kernel_c1,kernel_f1,weight_f1,weight_output,bias_c1,bias_f1);end    
end
end
disp('网络训练完成,开始检验......');
%% 测试阶段
number = 1;  
count=0;
for n=101:110for m=1:26%读取样本
%         train_data=imread(strcat(num2str(m),'_',num2str(n),'.bmp'));path = ['C:\Users\Administrator\Desktop\流程\时域频域图\figure_2\figure_28_28\',[num2str(m),'_',num2str(n)],'.bmp'];%如0_1~0_10%读取样本train_data=imread(path);train_data=double(train_data);% 去均值
%       train_data=wipe_off_average(train_data);%前向传递,进入卷积层1for k=1:layer_c1_numstate_c1(:,:,k)=convolution(train_data,kernel_c1(:,:,k));%进入激励函数state_c1(:,:,k)=tanh(state_c1(:,:,k)+bias_c1(1,k));%进入pooling1state_s1(:,:,k)=pooling(state_c1(:,:,k),pooling_a);end%进入f1层[state_f1_pre,state_f1_temp]=convolution_f1(state_s1,kernel_f1,weight_f1);%进入激励函数for nn=1:layer_f1_numstate_f1(1,nn)=tanh(state_f1_pre(:,:,nn)+bias_f1(1,nn));end%进入softmax层for nn=1:layer_output_numoutput(1,nn)=exp(state_f1*weight_output(:,nn))/sum(exp(state_f1*weight_output));end[p,classify]=max(output);if (classify==m+1)count=count+1;endfprintf('真实类别为%d  预测类别为%d  概率值为%d \n',m,classify,p);infor(number,1) = m;infor(number,2) = classify;infor(number,3) = p;number = number+1;end
end%% 准确率计算number = 1;
A = size(infor);
for i=1:A(1)if infor(i,1)- infor(i,2)==0number =number+1;endendaccuracy = number/A(1)save data_1.mat

 FUNCTION  convolution

function [state]=convolution(data,kernel)%实现卷积层操作?
[data_row,data_col]=size(data);
[kernel_row,kernel_col]=size(kernel);
for m=1:data_col-kernel_col+1for n=1:data_row-kernel_row+1state(m,n)=sum(sum(data(m:m+kernel_row-1,n:n+kernel_col-1).*kernel));end
end

  FUNCTION   convolution_f1

function [state_f1,state_f1_temp]=convolution_f1(state_s1,kernel_f1,weight_f1)
%% 完成卷积层2操作
layer_f1_num=size(weight_f1,2);
layer_s1_num=size(weight_f1,1);
%%
for n=1:layer_f1_numcount=0;for m=1:layer_s1_numtemp=state_s1(:,:,m)*weight_f1(m,n);count=count+temp;endstate_f1_temp(:,:,n)=count;state_f1(:,:,n)=convolution(state_f1_temp(:,:,n),kernel_f1(:,:,n));
end
end

 FUNCTION CNN_upweight

function [kernel_c1,kernel_f1,weight_f1,weight_output,bias_c1,bias_f1]=CNN_upweight(yita,Error_cost,classify,train_data,state_c1,state_s1,state_f1,state_f1_temp,...output,kernel_c1,kernel_f1,weight_f1,weight_output,bias_c1,bias_f1)
%%%     完成参数更新,权值和卷积核
%% 结点数目
layer_c1_num=size(state_c1,3);
layer_s1_num=size(state_s1,3);
layer_f1_num=size(state_f1,2);
layer_output_num=size(output,2);[c1_row,c1_col,~]=size(state_c1);
[s1_row,s1_col,~]=size(state_s1);[kernel_c1_row,kernel_c1_col]=size(kernel_c1(:,:,1));
[kernel_f1_row,kernel_f1_col]=size(kernel_f1(:,:,1));
%% 保存网络权值
kernel_c1_temp=kernel_c1;
kernel_f1_temp=kernel_f1;weight_f1_temp=weight_f1;
weight_output_temp=weight_output;
%% Error计算
label=zeros(1,layer_output_num);
label(1,classify+1)=1;
delta_layer_output=output-label;
%% 更新weight_output
for n=1:layer_output_numdelta_weight_output_temp(:,n)=delta_layer_output(1,n)*state_f1';
end
weight_output_temp=weight_output_temp-yita*delta_weight_output_temp;%% 更新bias_f1以及kernel_f1
for n=1:layer_f1_numcount=0;for m=1:layer_output_numcount=count+delta_layer_output(1,m)*weight_output(n,m);end%bias_f1delta_layer_f1(1,n)=count*(1-tanh(state_f1(1,n)).^2);delta_bias_f1(1,n)=delta_layer_f1(1,n);%kernel_f1delta_kernel_f1_temp(:,:,n)=delta_layer_f1(1,n)*state_f1_temp(:,:,n);
end
bias_f1=bias_f1-yita*delta_bias_f1;
kernel_f1_temp=kernel_f1_temp-yita*delta_kernel_f1_temp;
%% 更新weight_f1
for n=1:layer_f1_numdelta_layer_f1_temp(:,:,n)=delta_layer_f1(1,n)*kernel_f1(:,:,n);
end
for n=1:layer_s1_numfor m=1:layer_f1_numdelta_weight_f1_temp(n,m)=sum(sum(delta_layer_f1_temp(:,:,m).*state_s1(:,:,n)));end
end
weight_f1_temp=weight_f1_temp-yita*delta_weight_f1_temp;%% 更新 bias_c1
for n=1:layer_s1_numcount=0;for m=1:layer_f1_numcount=count+delta_layer_f1_temp(:,:,m)*weight_f1(n,m);   enddelta_layer_s1(:,:,n)=count;delta_layer_c1(:,:,n)=kron(delta_layer_s1(:,:,n),ones(2,2)/4).*(1-tanh(state_c1(:,:,n)).^2);delta_bias_c1(1,n)=sum(sum(delta_layer_c1(:,:,n)));
end
bias_c1=bias_c1-yita*delta_bias_c1;
%% 更新 kernel_c1
for n=1:layer_c1_numdelta_kernel_c1_temp(:,:,n)=rot90(conv2(train_data,rot90(delta_layer_c1(:,:,n),2),'valid'),2);
end
kernel_c1_temp=kernel_c1_temp-yita*delta_kernel_c1_temp;%% 网络权值更新
kernel_c1=kernel_c1_temp;
kernel_f1=kernel_f1_temp;weight_f1=weight_f1_temp;
weight_output=weight_output_temp;end

  FUNCTION init_kernel

function [kernel_c1,kernel_f1]=init_kernel(layer_c1_num,layer_f1_num)
%卷积核初始化
for n=1:layer_c1_numkernel_c1(:,:,n)=(2*rand(5,5)-ones(5,5))/12;
end
for n=1:layer_f1_numkernel_f1(:,:,n)=(2*rand(12,12)-ones(12,12));
end
end

  FUNCTION pooling

 

function state=pooling(data,pooling_a)
%% 实现取样层pooling操作
[data_row,data_col]=size(data);
[pooling_row,pooling_col]=size(pooling_a);
for m=1:data_col/pooling_colfor n=1:data_row/pooling_rowstate(m,n)=sum(sum(data(2*m-1:2*m,2*n-1:2*n).*pooling_a));end
end
end

  view figure

clc
clear
load data_1.mat infor accuracy
%%
A = size(infor);
figure(1)
hold on
plot(infor(:,1),'bo');%实际类别
plot(infor(:,2),'r+');%predict_label
legend('实际测试集分类','预测测试集分类');
%设置x轴范围和刻度
set(gca,'XLim',[0 260]);%X轴的数据显示范围
set(gca,'XTick',[0:10:260]);%设置要显示坐标刻度
% set(gca,'XTickLabel',[0:1:10]);%给坐标加标签 %设置y轴范围和刻度set(gca,'YLim',[1 26]);%X轴的数据显示范围
set(gca,'YTick',[0:1:26]);%设置要显示坐标刻度
% set(gca,'YTickLabel',[95:1:101]);%给坐标加标签 
grid on;%%
data = transform(infor);
figure(2)
hold on
plot(data(:,1),'bo');%实际类别
plot(data(:,2),'r+');%predict_label
legend('实际测试集分类','预测测试集分类');
%设置x轴范围和刻度
set(gca,'XLim',[0 260]);%X轴的数据显示范围
set(gca,'XTick',[0:10:260]);%设置要显示坐标刻度
% set(gca,'XTickLabel',[0:1:10]);%给坐标加标签 %设置y轴范围和刻度set(gca,'YLim',[1 26]);%X轴的数据显示范围
set(gca,'YTick',[0:1:26]);%设置要显示坐标刻度
% set(gca,'YTickLabel',[95:1:101]);%给坐标加标签 
grid on;
%% 计算每个类别错误个数
error_cat_num = zeros(26,1);
for i=1:26number =0;for j= i*10-9 : i*10if data(j,1)- data(j,2)==0number =number+1;endenderror_cat_num(i,1)=number; end%%
%% 相关系数%%
% 1. 相对误差error
input_test_label = data(:,1);
predict_label = data(:,2);
error = abs(predict_label - input_test_label)./input_test_label;
[N,~]=size(input_test_label);
%%
% 2. 决定系数R^2
R2 = (N * sum(predict_label .* input_test_label) - sum(predict_label) * sum(input_test_label))^2 / ((N * sum((predict_label).^2) - (sum(predict_label))^2) * (N * sum((input_test_label).^2) - (sum(input_test_label))^2)); %%
% 3. 结果对比
result = [input_test_label' predict_label' error']%% VI. 绘图
figure
plot(1:N,input_test_label,'b:*',1:N,predict_label,'r-o')
legend('真实值','预测值')
xlabel('预测样本')
ylabel('标签值')
string = {'测试集预测结果对比';['R^2=' num2str(R2)]};
title(string)

  

 

转载于:https://www.cnblogs.com/hkkeryu/p/10912024.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目:飞凌单片机boa服务器遇到问题总结

1.项目描述&#xff1a; \qquad基于飞凌单片机OKA40i-C开发板&#xff0c;使用browserboa进行通信&#xff0c;可以通过网页下载单片机的文件&#xff0c;也可以通过网页上传电脑客户端的文件到单片机。 2.开发环境&#xff1a; \qquad单片机是飞凌公司的OKA40i-C开发板&#…

方向对了?MIT新研究:GPT-3和人类大脑处理语言的方式惊人相似

来源&#xff1a;机器之心「人工智能网络并没有试图直接模仿大脑&#xff0c;然而最终看起来像大脑一样&#xff0c;这在某种意义上表明&#xff0c;人工智能和自然之间发生了某种趋同演化。」计算机擅长理解结构化数据&#xff0c;让计算机去理解主要以文化习惯沉淀下来的人类…

C# AOP

我在网上看了一下关于AOP的各种介绍&#xff0c;我觉得和我想象的不一样&#xff0c;不可调和啊&#xff0c;我的理解是从拦截来的 &#xff0c;就是管道&#xff0c;管道里面有很多面片&#xff0c;你可以在这些面片里面插入逻辑&#xff0c;这和事件基本是一回事啊&#xff0…

linux的基础知识——signal信号捕捉,信号集操作函数

文章目录1.signal捕捉信号2.信号集操作函数3.sigprocmask函数4.sigpending函数5.例子1&#xff1a;打印某个进程未决信号集6.例子2&#xff1a;signal函数的注册捕捉执行函数7.sigaction函数8.信号捕捉特性9.内核实现信号捕捉过程1.signal捕捉信号 #include <signal.h> …

MIT诺奖大牛2万字雄文:记忆的本质

来源&#xff1a;知乎&#xff1a;连玉君Stata专栏-连享会文&#xff1a;Sheena A. Josselyn & Susumu Tonegawa译&#xff1a;C57记忆的神经基础形成记忆的能力是学习和知识积累的关键。然而什么是记忆&#xff1f;长久以来&#xff0c;人们都渴望找到大脑中形成记忆的神经…

如何判断两个IP地址是不是处于同一网段?

个人理解&#xff0c;欢迎指正。 一、要判断两个IP地址是不是在同一个网段&#xff0c;就将它们的IP地址分别与子网掩码做与运算&#xff0c;得到的结果-->网络号&#xff0c;如果网络号相同&#xff0c; 就在同一子网&#xff0c;否则&#xff0c;不在同一子网。 例&#x…

linux的基础知识——时序竞态

文章目录1.pause函数1.1 pause函数例子2.时序问题3.解决时序问题4.例子&#xff1a;sigsuspend函数的举例5.总结1.pause函数 1.1 pause函数例子 \qquad程序依次从1到无穷输出数字&#xff0c;当遇到100的整数倍时就暂停&#xff0c;键盘输入ctrlc&#xff0c;就继续输出。 #in…

深夜文献:2021腾讯科技WE大会硬核复习资料,看看如何烧脑?

来源&#xff1a;腾讯今年的腾讯科学WE大会&#xff0c;再次带着全球顶尖的科学家们&#xff0c;为你贡献了能吃三个多小时的科学盛宴&#xff1a;宇宙起源、黑洞观测、脑机接口、电子皮肤、软体机器鱼、快充电池......听了就很下饭的那种看了直播的同学更赚&#xff1a;这是微…

linux的基础知识——全局变量异步I/O

文章目录1.父子进程间的通信举例1.父子进程间的通信举例 #include<stdio.h> #include<signal.h> #include<unistd.h> #include<stdlib.h>int n0,flag0;void sys_err(char *str) {perror(str);exit(1); }void do_sig_child(int num) {printf("i a…

python 经典排序算法

python 经典排序算法 排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存。常见的内部排序算法有&#xff1a;插入排序…

宇宙中至少有两种方式能灭绝人类,第一种仅需两秒

来源&#xff1a;科学的乐园在科幻小说《三体Ⅲ&#xff1a;死神永生》之中&#xff0c;歌者文明“母世界”的宇宙飞船曾经利用宇宙规律武器二向箔来摧毁地球文明&#xff0c;将地球所处的三维世界完全变成了一个二维世界。很多人无法想象&#xff0c;仅仅一个手机大小的物质&a…

linux的基础知识——捕捉SIGCHLD、信号传参,中断系统调用

文章目录1.SIGCHLD信号2.信号传参3.捕捉信号传参4.中断系统调用1.SIGCHLD信号 2.信号传参 3.捕捉信号传参 4.中断系统调用

Android SQLiteDatabase分析

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主同意不得转载。 https://blog.csdn.net/Sailingthink/article/details/27691953 Android中的数据存储使用的小巧的SQLite数据库。为了方便java层使用SQLite&#xff0c;android做了大量的封装&#xff0c;提供了一些…

linux的基础知识——终端

文章目录1.终端2.终端的启动流程3.线路规程4.ttyname函数5.网络终端1.终端 2.终端的启动流程 3.线路规程 4.ttyname函数 5.网络终端

美国没有光刻机背后的原因

来源&#xff1a;semiwiki编辑&#xff1a;小艾 光刻可以说是半导体制造中最重要的一步。今天最先进的 EUV 光刻机是极其复杂的机器&#xff0c;其成本与一架新的波音喷气式客机一样高。从 1984 年与飞利浦的合资企业开始&#xff0c;ASML 已经发展成为世界第二大芯片设备制造商…

项目Beta冲刺(团队) --1/7

课程名称&#xff1a;软件工程1916|W&#xff08;福州大学&#xff09;作业要求&#xff1a;项目Beta冲刺&#xff09;团队名称&#xff1a;葫芦娃队作业目标&#xff1a;尽力完成团队博客 队员学号队员昵称博客地址041602421der himmelhttps://www.cnblogs.com/wenghaoo221600…

2021年度人类社会发展十大科学问题发布

来源&#xff1a;中国科学报作者&#xff1a;高雅丽 11月7日&#xff0c;在第三届世界科技与发展论坛闭幕式上&#xff0c;可持续发展大数据国际研究中心主任、中国科学院院士郭华东&#xff0c;英国工程技术学会主席朱利安杨以及《交叉科学》主编斯蒂法诺通扎尼共同发布“2021…

linux的基础知识——进程组

文章目录1.进程组的概念2.进程组操作函数1.进程组的概念 2.进程组操作函数

基于spring的观察者模式

简单的说&#xff0c;观察者模式&#xff0c;就类似于 广播站发送广播&#xff0c;和收音机的关系。多个收音机去收听同一个广播频道。 在实际的业务场景中&#xff0c;可以是这样的。创建订单成功后&#xff0c;发布事件。然后减库存。发送短信。调用微信。调用物流服务。等多…

linux的基础知识——会话

文章目录1.会话2.getsid函数3.setsid函数1.会话 \qquad进程组是进程的集合&#xff0c;而会话是进程组的集合。 2.getsid函数 3.setsid函数