clc;clear;close all
%% 加载种子光谱数据
%
% load PF
% load HF
% load DataH
% load DataP
load PB1123
load HB1123
load wavelength
% load PB1026
% load HB1026
%% 训练光谱数据
a1=PB1123(:,2:126)
a2=HB1123(:,2:126)
% a1=PB1026(:,2:126)
% a2=HB1026(:,2:126)
SampleData=[a1;a2]
SampleData2=SampleData
% SampleData=SampleData(:,2:126)
% SampleData=-log(SampleData)
% x=[]
% SampleData=mapminmax(SampleData, 0, 1);
SampleData=smoothts(SampleData,'b',7)
% SampleDate=diff(SampleData,1)
SampleData=VN_qh(SampleData)
SampleData=zscore(SampleData)
% trainData1= SampleData(1:100,:);
% trainData2= SampleData(101:200,:);
h1= SampleData(1:100,:);
h2= SampleData(101:200,:);
% h3= SampleData(201:300,:);
% h4= SampleData(301:400,:);
sum1=[]
sum2=[]
sum3=[]
sum4=[]
sum5=[]
sum6=[]
s1=[]
s2=[]
% a1=[]
% a2=[]
ind=[]
x1=[]
x2=[]
y1=[]
y2=[]
% t1=0
% t2=0
% cmin=-8
% cmax=8
% gmin=-8
% gmax=8
% v=3
% cstep=1
% gstep=1
% accstep=4.5
%% 训练光谱标签
trainLabel(1:80,:)=0
trainLabel(81:160,:)=1
%% 测试光谱标签
testLabel(1:20,:) = 0
testLabel(21:40,:) = 1
for i=1:100
b=randperm(100);
q=80;
p=20;
train1=[];
train2=[];
test1=[];
test2=[];
for t=1:q
train1=[train1;h1(b(t),:)];
train2=[train2;h2(b(t),:)];
end
for t=q+1:100
test1=[test1;h1(b(t),:)];
test2=[test2;h2(b(t),:)];
end
trainData=[train1;train2]
testData=[test1;test2]
% testData=[h3;h4]
% N=[50,50]
% SampleData=LDA(SampleData,N,1)
% [pc,score1,latent1,tsquare] = princomp(SampleData(1:800,:));
% ant1=cumsum(latent1)./sum(latent1)
% score2=SampleData(1001:1800,:)*pc(:,1:125)
%% 调用函数
for j=1:39
B=[]
[XL1,YL1,XS1,YS1,beta,PCTVAR1,MSE,stats1] = plsregress(trainData,trainLabel,j);
Ypredict=[ones(size(testData,1),1) testData]*beta;
for m=1:40
if(Ypredict(m,:)>0.5)
B=[B;1]
else
B=[B;0]
end
end
accuracy(j) = length(find(B == testLabel))/length(testLabel)*100;
end
[k,index]=max(accuracy)
ind=[ind;index]
% l=[]
[XL1,YL1,XS1,YS1,beta,PCTVAR1,MSE,stats1] = plsregress(trainData,trainLabel,index);
trainData=trainData*stats1.W
testData1=testData*stats1.W
[t1,t2,res] = LDA(trainData(1:80,:),trainData(81:160,:),testData1)
% t1=mean(t1)
% t2=mean(t2)
meanVector1 = mean( t1 );
meanVector2 = mean( t2 );
% %% 测试样本集
testData = res;
% %% 测试样本集对应的类别标签
classLabel(1:20) = 1;
classLabel(21:40) = 2;
%
%
% %% 利用最小距离分类器分类测试样本
class = zeros(1, 40);
% class = zeros(1, 200);
[rate,class] = Nearest(meanVector1,meanVector2,testData,classLabel,class)
d1= length(find(class(:,1:20) == classLabel(:,1:20)))/length(classLabel(:,1:20))*100
d2= length(find(class(:,21:40) == classLabel(:,21:40)))/length(classLabel(:,21:40))*100
sum3(i)=d1;
sum4(i)=d2;
sum2(i)=rate
% w=zeros(80,1,2)
% w(:,:,1)=t1
% w(:,:,2)=t2
% mu1(:,:,1)=mean(t1)
% mu1(:,:,2)=mean(t2)
% sigma1(:,:,1) = cov(w(:,:,1));
% sigma1(:,:,2) = cov(w(:,:,2));
% p(1) = 1/2;
% p(2) = 1/2;
% p(3) = 1/3;
% p(1) = 0.8;
% p(2) = 0.1;
% p(3) = 0.1;
% 样本矢量
% X = [5];
% testLabel(1:20,:)=1
% testLabel(21:40,:)=2
% classLabel2=[]
% for i=1:40
% style=GuassianBayesModel(mu1,sigma1,p,res(i,:));
% classLabel2=[classLabel2;style]
% end
% testLabel(1:20,:)=1
% testLabel(21:40,:)=2
% rate4 = sum(classLabel2==testLabel)/size(testLabel,1);
% N=[80,80]
% M=[20,20]
% for q=1:17
% reduced_data1=LDA1(trainData,N,1)
% reduced_data2=LDA1(testData,M,1)
trainD=[t1;t2]
model=svmtrain(trainLabel, trainD,'-c 2 -g 0.02 -t 0 -b 1');
% % % % model=svmtrain(trainLabel,trainData,'-t 0');
[predict_label, accuracy, dec_values] = svmpredict(testLabel, res, model);
% d3= length(find(predict_label(1:20,:) == testLabel(1:20,:)))/length(testLabel(1:20,:))*100
% d4= length(find(predict_label(21:40,:) == testLabel(21:40,:)))/length(testLabel(21:40,:))*100
% sum5(i)=d3
% sum6(i)=d4
l(i)=accuracy(1,1);
end
% for i=1:20
% a1=plot(testData1(i,1),testData1(i,2),'*r')
% hold on
%
% end
% hold on
% for i=21:40
% a2=plot(testData1(i,1),testData1(i,2),'+b')
% hold on
%
% end
% hold on
% legend([a1,a2],'seed1','seed2')
% title('DPLS')
%
%
% for i=1:20
% h1=plot(i,res(i,:),'*r')
% hold on
%
% end
%
% for i=21:40
% h2=plot(i,res(i,:),'+b')
% hold on
%
% end
% hold on
% legend([h1,h2],'seed1','seed2')
% title('DPLS+LDA')
%
%
% [pc,score1,latent1,tsquare] = princomp(SampleData(1:800,:));
% score2=SampleData(1001:1800,:)*pc(:,1:125)
x0=mean(sum2)
% x2=max(s2)
% x3=min(s2)
x4=mean(sum3)
% x5=max(a1)
% x6=min(a1)
x7=mean(sum4)
% x8=mean(l)
% x9=mean(sum5)
% x10=mean(sum6)
% x8=max(a2)
% x9=min(a2)