首页 > 编程知识 正文

matlab自带svm函数,c语言double精度不够怎么办

时间:2023-05-05 19:07:36 阅读:117576 作者:3603

% E3 % 81 % 93 % E3 % 82 % 8c % E3 % 81 % af % E3 % 83 % 86 % E3 % 82 % B9 % E3 % 83 % 83 % 81 % 97 % E3 % 81 % 9fm % E3 % 8b % E3 % 83 % a5 % E3 % 83 % BC % E3 % 83 % a9 % E3 % 83 % 83 % 83 % E3 % 83 % 83 % 88 % E3 % 83 % af % 3 % 83 % 87 % E3 % 82 % a3 % 0a % 25 % 25 % E7 % a9 % E3 % 81 % AE % E7 % 92 % B0 % E5 % 83 % E5 % a4 % 89 % E6 % 95 % BC % 9b % 0a格式% 20 compact % ef % BC % 9b % 0a % 25 % E3 % 83 % E3 % 83 % BC % E3 % 82 % BF % E6 % 8a % BD % ed a1 % 8c % E5 % 88 % 97 % E3 % 80 % 81 wine _ labes :178 %2a1 % E3 % 81 % AE % E5 % 88 % 97 % E3 % 83 % 99 % E3 % 82 % af % 88 % E3 % 83 % 87 % E3 % 83 % BC % E3 % 82 % BF wine % E3 % 82 % E3 % 83 % ad % E3 % 83 % 83 % 89 % E3 % 81 % 97 83 % 88 % E3 % 83 % 87 % E3 % 83 % BC % E3 % 82 % BF % E3 % 81 % aebox % E5 % 8f % af % E8 % a6 % 96 % E5 % 8c % 96 % E5 % 9b % BC % 8c % 27 orientation % 27 % ef % BC % 8c % 27 horizontal % 27 % ef % BC % 27 labels % 27 % ef % BC %8ccategories % ef % BF % E3 % 81 % aebox % E5 % 8f % af % E8 % a6 % E5 % 8c % 96 % E5 % 9b % B3 % ef % BC % 89 % E3 % 80 % 81 % ef % BC % 88 % 9e % E6 % 80 % a7 % E5 % 80 % a4 % 27 % ef % BC % 8c % 27 % fontsize % 27 % ef % BC % 8c 12 % ef % BC % 89 % ef % BC % 9b % 0a grtsize % 82 % BF % E3 % 81 % AE % E5 % 88 % 86 % E6 % AC % a1 % E5 % 85 % 83 % E5 % 8f % af % E8 % 96 % E5 % 8c % 96 % E5 % 9b % 8c1 % ef % BC % 9b % 0a hold % 20on % 0a for % 20 run % 20 % 3d % 201:178 % 0a plot % ef % BC % 88 run % ef % BC %8cwine _ lar label % ef % BC % 88 % 27 % E3 % 82 % b5 % E3 % 83 % 83 % 97 % E3 % 83 % ab % 27 % ef % BC % 8c % 27 fontsize % 27 % 86 % E3 % 82 % B4 % E3 % 83 % aa % E3 % 83 % E3 % 99 % E3 % 83 % ab % E3 % 80 % 80 % E3 % 81 % E3 % 80 % 80 c fontton % BC % 8c % 27 fontsize % 27 % ef % BC % 8c 10 % ef % BC % 89 % ef % BC % 9b % 0a for % 20 run % 20 % 3d % 2023:14 % 0a subplot ef % BC % 9b % 0a str % 20 % 3d % 20 % 5b % 27 attrib % 27 % ef % BC %8cnum2str % ef % BC % 88 run-1 % ef % BC % 89 % 5d % ef % ef % BC % 89i % ef % BC %8crun-1 % ef % BC % 89 % ef % BC % 8c % 27 % 27 % 29 % ef % BC % 9b % 0a end % 0a xlabel % ef 7 % ef % BC % 8c 10 % ef % BC % 89 % ef % BC % 9b % 0a ylabel % ef % BC % 88 % 27 % E5 % B1 % E6 % 80 % a7 % E5 % 80 % a4 % tr % ef % BC % 8c % 27 fontsize % 27 % ef % BC % 8c 10 % ef % BC % 89 % ef % BC % 9b % 0a end % 25 % e9 % 81 % b8 % E6 % 8a 82 % B0 % E3 % 82 % bb % E3 % 83 % 83 % 83 % 88 % E3 % 81 % A8 % E3 % 83 % 86 % E3 % B9 % E3 % 83 % 88 % E3 % 82 % bb E7 % AC % AC % E4 % ba % 8c % e9 % a1 % 9e % E3 % 81 % ae60-95 % E3 % 80 % 81 % E7 % AC % E4 % b8 % 89 % e9 % a1 % 9e % 2 % B0 % E3 % 82 % bb % E3 % 83 % E3 % 83 % 88 % E3 % 81 % A8 % E3 % 81 % 99 % E3 % 82 % 8b % 0a train _ wine % 3d % 5b win 60 % ef % BC % 9b % 20 wine % ef % BC % 88131:153 % ef % BC % 8c : % ef % BC % 89 % ef % BC % 89 % ef % BC % 9b % 0a % 22360 % 83 % 8b % E3 % 83 % B3 % E3 % 82 % B0 % E3 % 82 % bb % E3 % 83 % 83 % 88 % E3 % 81 % AE % E3 % 83 % a9 % E3 % 83 % E3 % 81 % B0 % E3 % 81 % aa % E3 % 82 % 82 % 8a % E3 % 81 % 9b % E3 % 82 % 93 % 0a train _ wine _ labels % 3d % 5b wwwb % ef % BC % 9b % 20 wine _ labels % ef % BC % 881313360153 % ef % BC % 89 % ef % BC % 9b % 0a % 25 % E7 % AC % E4 % b8 % e96-130 % E3 % 80 % 81 % E7 % AC % E4 % b8 % 89 % e9 % a1 % E3 % 81 % AE 154-178 % E3 % 82 % 92 % E3 % 83 % 86 % atest _ wine % 3d % 5b wine % 5d % ef % BC % 8831:59 % ef % BC % 8c : % ef % BC % 9b % 20 wine % ef % BC % 88963360130 % 0 % ef % BC % 89 % ef % BC % 89 % ef % BC % 9b % 0a % 25 % E8 % a9 % B2 % E5 % BD % 93 % E3 % 81 % 99 % E3 % 82 % 8b % E3 % 83 % E3 % 83 % ab % E3 % 82 % 82 % E5 % 88 % 86 % e9 % 9b % a2 % E3 % 81 % E3 % 81 % aa % E3 % 81 % 91 % E3 % 82 % 8c % E3 % wine _ labels % 5d % ef % BC % 8831:59 % ef % BC % 9b % 20 wine _ labels % ef % BC % 8896:130 % ef % BC % 9b % 20 wine 7 % E3 % 83 % BC % E3 % 82 % BF % E5 % 89 % 8d % E5 % 87 % a6 % E7 % 90 % 86 % 0a % 25 % E3 % 83 % E3 % 83 % BC % E3 % 82 % E3 % 83 % B3 % E3 % 82 % B0 % E3 % 82 % bb % E3 % 83 % E3 % 83 % 88 % E3 % 81 % A8 % E3 % 83 % 86 % E3 % 82 % B9 % E3 %

-2),2^(-1.5),...,2^(4), g 的变化范围是 2^(-4),2^(-3.5),...,2^(4),

[bestacc,bestc,bestg] = SVMcgForClass(train_wine_labels,train_wine,-2,4,-4,4,3,0.5,0.5,0.9);

% 打印精细选择结果

disp('打印精细选择结果');

str = sprintf( 'Best Cross Validation Accuracy = %g%% Best c = %g Best g = %g',bestacc,bestc,bestg);

disp(str);

%% 利用最佳的参数进行SVM网络训练

cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];

model = svmtrain(train_wine_labels,train_wine,cmd);

%% SVM网络预测

[predict_label,accuracy] = svmpredict(test_wine_labels,test_wine,model);

% 打印测试集分类准确率

total = length(test_wine_labels);

right = sum(predict_label == test_wine_labels);

disp('打印测试集分类准确率');

str = sprintf( 'Accuracy = %g%% (%d/%d)',accuracy(1),right,total);

disp(str);

%% 结果分析

% 测试集的实际分类和预测分类图

% 通过图可以看出只有三个测试样本是被错分的

figure;

hold on;

plot(test_wine_labels,'o');

plot(predict_label,'r*');

xlabel('测试集样本','FontSize',12);

ylabel('类别标签','FontSize',12);

legend('实际测试集分类','预测测试集分类');

title('测试集的实际分类和预测分类图','FontSize',12);

grid on;

snapnow;

%% 子函数 SVMcgForClass.m

function [bestacc,bestc,bestg] = SVMcgForClass(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)

%SVMcg cross validation by faruto

% about the parameters of SVMcg

if nargin < 10

accstep = 4.5;

end

if nargin < 8

cstep = 0.8;

gstep = 0.8;

end

if nargin < 7

v = 5;

end

if nargin < 5

gmax = 8;

gmin = -8;

end

if nargin < 3

cmax = 8;

cmin = -8;

end

% X:c Y:g cg:CVaccuracy

[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);

[m,n] = size(X);

cg = zeros(m,n);

eps = 10^(-4);

% record acc with different c & g,and find the bestacc with the smallest c

bestc = 1;

bestg = 0.1;

bestacc = 0;

basenum = 2;

for i = 1:m

for j = 1:n

cmd = ['-v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) )];

cg(i,j) = svmtrain(train_label, train, cmd);

if cg(i,j) <= 55

continue;

end

if cg(i,j) > bestacc

bestacc = cg(i,j);

bestc = basenum^X(i,j);

bestg = basenum^Y(i,j);

end

if abs( cg(i,j)-bestacc )<=eps && bestc > basenum^X(i,j)

bestacc = cg(i,j);

bestc = basenum^X(i,j);

bestg = basenum^Y(i,j);

end

end

end

% to draw the acc with different c & g

figure;

[C,h] = contour(X,Y,cg,70:accstep:100);

clabel(C,h,'Color','r');

xlabel('log2c','FontSize',12);

ylabel('log2g','FontSize',12);

firstline = 'SVC参数选择结果图(等高线图)[GridSearchMethod]';

secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...

' CVAccuracy=',num2str(bestacc),'%'];

title({firstline;secondline},'Fontsize',12);

grid on;

figure;

meshc(X,Y,cg);

% mesh(X,Y,cg);

% surf(X,Y,cg);

axis([cmin,cmax,gmin,gmax,30,100]);

xlabel('log2c','FontSize',12);

ylabel('log2g','FontSize',12);

zlabel('Accuracy(%)','FontSize',12);

firstline = 'SVC参数选择结果图(3D视图)[GridSearchMethod]';

secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...

' CVAccuracy=',num2str(bestacc),'%'];

title({firstline;secondline},'Fontsize',12);

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。