最小二乘支持向量机

最小二乘支持向量机
最小二乘支持向量机

clc

clear

close all

%---------------------------------------------------

% 产生训练样本与测试样本,每一列为一个样本

k=125;

m=10;

n1=ones(5,125);

n2=ones(5,10);

n3=[120,150,218,247.7,56,181,0,57,4.32,23.51,24.16,93.5,96,93,910,20,24,26.7,220,33.9,46.9,70 .2,72,128,139,144,159.8,230,679,15.21,20.37,22.1,16,35,73,86,336,82,87,94,121,170,172.9,180, 26.6,70.4,164,25.1,274,3,14,45,60,72,304,22.3,35.1,56,63,68,68,207,236,37,80,82,293,42,220,76 6,10,36.2,105,117,240,851,4072,4.6875,0.962,2,20.443,18.614,4.0787,17.187,17.314,11.299,11. 31,3.7648,2587.2,1565,87.266,85.865,84.333,61.394,57.983,59,57,673.6,32.2,255,707,50.11,56, 121,130.4,300.44,685,174,111,410,574,127,200,1678,162,334,48.155,49.77,45.703,39.216,56.98 2,32.597,26.859,43.737,20.385;

120,60,120.7,148.7,78,262,434,77,193,61.33,261.05,36.7,41,58,1592,41.9,27.8,90.6,230,36.5,16 1.6,70.2,442,419,714,754,438.7,572.4,4992,61.25,59.79,64.1,237,30,520,110,419,81,87,195,69,3 20,334,97,22.7,69.5,244,411.91,376,198,221,168,139,160.3,443.5,7.8,50.6,99.9,149.6,99.2,99.2, 416,410.2,130,243,161,134,98,340,990,4,12.6,169.4,257,676,2802,15850,10.826,15.787,16.667, 17.036,17.972,20.83,21.432,21.731,21.834,21.835,26.818,7.882,98,6.5004,7.0013,8.0593,10.822 ,18.866,28,13,423.5,5.5,48,115,15.97,13,14,2.39,42.14,102,24,58,120,256,107,48,652.9,35,39.9, 1.4272,8.4485,9.1405,9.4118,10.479,15.47,16.887,17.018,17.175;

33,40,126.6,78.7,18,41,226,19,118,45.21,196.13,11.2,12.8,43,801,20.2,24.4,49.2,57,31.5,94.1,17 1.5,221,269.4,351,250,312.4,343,1823,45.94,45.24,44.3,92,10,140,18,105,33,26,14,32,53,172,34 ,22.5,28.9,103,320.9,55,191,199,82,21,63.1,110.9,12.4,16.1,51.4,57.5,35.9,35.9,347,159,91,274. 2,79,52,156,42,115,3,4.4,59.1,92,200,772,9057,17.522,12.299,3.8667,5.6786,6.6865,6.992,5.370 8,5.8304,11.299,11.244,7.2202,4.704,35,5.1647,4.4914,7.2211,4.1623,4.6218,9,0.1,77.6,1.4,8.3, 11,4.66,2.4,3,7.22,3.25,9,9.3,0,18,22,11,14,80.7,5.6,47.8,4.0354,2.1505,2.4557,2.7451,1.2837,4. 9724,3.0902,2.1034,1.7657;

84,70,142.1,192.7,21,28,387,21,125,98.03,201.4,69.5,82.5,37,932,44.2,30,95,110,39.3,193.3,371 .6,461,614.1,634,502,644.6,768.9,3671,81.83,80.49,81.4,470,93,1200,92,1074,224,218,153,268, 520,812.5,271,109,241.2,497,1832.8,1002,701,804,330,430,303.7,946,95.7,93,24.8,276,202.9,20 2.9,1345,817.3,430,1347.7,406,239,610,480,660,33,15.5,347.6,468,818,3521,22621,66.964,70.2 46,76.533,52.811,55.363,67.589,54.936,52.297,53.089,53.146,61.888,1.4,48,1.0686,2.642,0.386 85,10.406,8.6555,70,11,988.9,12.6,33,55,45.37,22,29,1.8,43.18,170,29.3,105,71,503,154,117,10 05.9,30,5.35,22.539,19.355,19.509,22.941,13.571,38.674,39.431,26.219,24.719;

0.55,1,0.9,0.9,0,0,0,0,0,1.01,0.87,1.1,0.6,0,0,0.38,0,0.5,7,0,0.56,0,0.7,0.35,0,1,0.38,0.51,0,0,0,0,0 ,7.1,6,7.4,21,5.4,7.5,15,8,3.2,37.7,8,0,10.4,8.3,18.4,17,0,0,3.1,4.6,0.1,56.1,1.4,1.1,2.3,0,0,0,20,3. 5,2.9,8.4,8.9,2.9,0,14,0,6,0,1.8,4,4,10,535,0,0.7052,0.93333,4.0318,1.3644,0.50983,1.0742,2.826 9,2.4692,2.4646,0.30944,0,0,0,0,0,13.215,9.8739,15,12,344.5,13.2,29.8,81,12.3,22.13,74,4.38,64 .71,367,64.4,201,250,382,224,131,419.1,44,247.6,23.843,20.276,23.192,25.686,17.684,8.2873,1 3.733,10.924,35.955];

for t=1:k

n1(:,t)=(n3(:,t)-min(n3(:,t)))/(max(n3(:,t))-min(n3(:,t)));

end

x1 = [1*ones(1,6),2*ones(1,26),3*ones(1,56),4*ones(1,1),5*ones(1,6),6*ones(1,30)];

n4 = [160,97,27,56,78,92,980,83.714,23,42;

130,229,90,27,161,62,73,8.067,12,62;

33,136,42,20,86,35,58,5.175,12,5;

96,227,63,108,353,280,12,3.0441,10,63;

0,1,0.2,6,10,11,0,0,61,73];

for n=1:m

n2(:,n)=(n4(:,n)-min(n4(:,n)))/(max(n4(:,n))-min(n4(:,n)));

end

x2 = [1*ones(1,1),2*ones(1,2),3*ones(1,3),4*ones(1,1),5*ones(1,1),6*ones(1,2)];

xn_train = n1; % 训练样本

dn_train = x1; % 训练目标

xn_test = n2; % 测试样本

dn_test = x2; % 测试样本

%---------------------------------------------------

% 参数设置

X = xn_train';% 训练样本

Y = dn_train';

Xt = xn_test';

Yt = dn_test';

type = 'c'; %'type has to be ''function (estimation)'', ''classification'', ''timeserie'' or ''NARX'''] kernel_type = 'RBF_kernel';

L_fold = 7;

preprocess = 'preprocess'; %是否归一化'preprocess'是'original'否

codefct = 'code_OneVsOne';

% 将“多类”转换成“两类”的编码方案

% 1. Minimum Output Coding (code_MOC)

% 2. Error Correcting Output Code (code_ECOC)

% 3. One versus All Coding (code_OneVsAll)

% 4. One Versus One Coding (code_OneVsOne)

%---------------------------------------------------

% 编码

[Yc,codebook,old_codebook]=code(Y,codefct);

%---------------------------------------------------

% 交叉验证优化参数

[gam,sig2] = tunelssvm({X,Y,type,[],[],kernel_type,preprocess},...

'gridsearch','crossvalidatelssvm',{L_fold,'misclass'},codefct);

%---------------------------------------------------

% 训练与测试

model = initlssvm(X,Y,type,[],[],kernel_type,preprocess);

model = changelssvm(model,'codetype',codefct);

model = tunelssvm(model,'gridsearch','crossvalidatelssvm',{L_fold,'misclass'});

model = trainlssvm(model);

plotlssvm(model,[],125);

Yd = simlssvm(model, Xt);

Result =1-abs(Yd-Yt) % 正确分类显示为1 Percent = sum(Result)/length(Result) % 正确分类率

相关主题
相关文档
最新文档