gusucode.com > 用mushrooms数据对模式识别课程讲述的各种模式分类方法matlab源码程序 > pattern-recognition-simulation/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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %将样本分为测试样本,训练样本1,训练样本2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% p = randperm(2000);%对1:2000的整数随机排序 experiment_test=samples(p(1:500),:);%测试样本 experiment_train1=samples(p(501:1250),:);%训练样本1 experiment_train2=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,error,ROC] = analyse_result(experiment_test,result_class)