📄 pca_knn2.m
字号:
clc;clear;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取数据,取16个特征%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%samples = textread('data2000.txt');samples = samples(:,[1:6,9:15,19:22]); %17列 第1列标号,16列特征%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对样本进行归一化处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[ms ns]=size(samples);TMax=max(samples);TMin=min(samples);% 第一列是样本标签,从第二列开始归一化for i=2:ns samples(:,i)=(samples(:,i)-TMin(i))/(TMax(i)-TMin(i));end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对样本进行降维,PCA变换%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%k_reduction=2;%降维后的维数cov_data=cov(samples(:,2:end));[pc,latent,explained] = pcacov(cov_data);pc1=pc(:,1:k_reduction);pc1=pc1';y=pc1*samples(:,2:end)';y = [samples(:,1)';y];dimenReduct_samples = y';%带标签for w = 1:5 %进行五次实验%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%将样本分为测试样本,训练样本1,训练样本2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%p = randperm(2000);%对1:2000的整数随机排序experiment_test=dimenReduct_samples(p(1:500),:);%测试样本experiment_train1=dimenReduct_samples(p(501:1250),:);%训练样本1experiment_train2=dimenReduct_samples(p(1251:2000),:);%训练样本2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 以训练样本1作为训练样本,对训练样本2进行剪辑。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%result_class=KNN_function(experiment_train1,experiment_train2,10);columnindex = find(experiment_train2(:,1)==result_class);experiment_train = experiment_train2(columnindex,:);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 以剪辑后的训练样本experiment_train作为训练样本,对训练样本experiment_test进行测试。%并分析测试结果%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%进行测试result_class=KNN_function(experiment_train,experiment_test,10);%分析结果 [correct(w,1),error(w,1),ROC(w,:)] = analyse_result(experiment_test,result_class);end%将结果放到一个数组中,便于观察数据correct = correct';error = error';ROC = ROC';result = [correct;error;ROC];result = result';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -