资源简介
实现孪生支持向量机的程序,里面有示例有注释,通俗易懂
代码片段和文件信息
% 线性孪生支持向量机二类分类算法
close all
clear
clc
%--------------导入数据-------------------%
load N_p % 正类点数据,特征信息存放在行里面
load N_n % 负类点数据,特征信息存放在行里面
%-----------------------------------------%
%% 第一步:数据预处理
%-------- 由原来的数据产生80%的训练数据和20%的预测数据------------%
n_p=size(N_p1); % 正类样本个数
n_n=size(N_n1); % 负类样本个数
n1=randperm(n_p); % 对1到n的n个正整数进行随机不重复的排列,形成一个1行n列的矩阵
n2=randperm(n_n);
f_p=floor(4*n_p/5); % 取80%的数据作为训练集,其余20%作为预测集
f_n=floor(4*n_n/5);
data_train_p=N_p(n1(1:f_p):); % 正类训练数据
data_train_n=N_n(n2(1:f_n):); % 负类训练数据
data_train=[data_train_p;data_train_n]; % 训练数据集(含正负类)
Y_train=[ones(f_p1);-ones(f_n1)]; % 训练数据标签集
data_predict_p=N_p(n1(f_p+1:end):); % 正类预测数据
data_predict_n=N_n(n2(f_n+1:end):); % 负类预测数据
data_predict=[data_predict_p;data_predict_n]; % 预测数据集(含正负类)
Y_predict=[ones(n_p-f_p1);-ones(n_n-f_n1)]; % 预测数据标签集
%----------------------------------------------------------------%
%----------相关参数初始化----------%
c1min=-2; c1max=2; %孪生支持向量机参数
c2min=-2; c2max=2;
best_c1=0; best_c2=0;
aac=rand(101);
bestAccuracy=0;
%--------------------------------%
%% 第二步:数据训练寻找最优参数c1c2
% 将c1和c2划分网格进行搜索
indices = crossvalind(‘Kfold‘Y_train10);
tic;
for c1=2^(c1min):1:2^(c1max)
for c2=2^(c2min):1:2^(c2max)
%采用K-CV方法将data大致平均分为K组
for run= 1:10
test=(indices == run); train=~test;
train_data=data_train(train:); % 训练数据集(含正类负类点集)
train_data_label=Y_train(train:); % 训练集标签(含正类负类点集)
test_data=data_train(test:); % 预测数据集(含正类负类点集)
test_data_label=Y_train(test:); % 预测集标签(含正类负类点集)
groupA=ismember(train_data_label1); % 分出正类点的位置
groupB=ismember(train_data_label-1); % 分出负类点的位置
A=train_data(groupA:); % 正类训练数据
B=train_data(groupB:); % 负类训练数据
%训练数据
[v1v2]=twinsvm_lin_train(ABc1c2);
%用训练所得孪生分类器进行分类
[accuracy]=twinsvm_lin_predict(v1v2test_datatest_data_label);
%下面用验证集进行验证并记录此时的准确率
acc(run)=accuracy;
end
cv=sum(aac)/10;
if (cv>bestAccuracy)
bestAccuracy=cv;
best_c1=c1;
best_c2=c2;
end
end
end
disp(‘准确率及最优参数‘);
str = sprintf( ‘Best Cross Validation Accuracy = %g%% ;Best c1 = %g ; Best c2 = %g;‘bestAccuracy*100best_c1best_c2);
disp(str);
t_train=toc
%---------------------------------------------------------------------%
%% 第三步:通过最优参数,对80%的数据训练,产生分类面,利用20%的预测数据进行准确率计算
k=0;
c1=best_c1;
c2=best_c2;
tic;
[v1v2IBJA]=twinsvm_lin_train(data_train_pdata_train_nc1c2
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4376 2014-12-03 19:12 TWSVM(线性)\lin_main.asv
文件 4329 2014-12-03 19:15 TWSVM(线性)\lin_main.m
文件 1781 2014-12-03 18:53 TWSVM(线性)\N_n.mat
文件 1780 2014-12-03 18:54 TWSVM(线性)\N_p.mat
文件 698 2014-12-03 19:22 TWSVM(线性)\twinsvm_lin_predict.asv
文件 823 2014-12-03 19:26 TWSVM(线性)\twinsvm_lin_predict.m
文件 1356 2014-12-03 19:17 TWSVM(线性)\twinsvm_lin_train.asv
文件 1418 2014-12-03 19:18 TWSVM(线性)\twinsvm_lin_train.m
文件 239 2014-11-05 17:00 TWSVM(非线性)\ker_Gaussian.m
文件 3873 2014-12-03 20:05 TWSVM(非线性)\ker_Main.m
文件 1535 2012-05-21 18:05 TWSVM(非线性)\N_n_ker.mat
文件 1548 2012-05-21 18:05 TWSVM(非线性)\N_p_ker.mat
文件 921 2014-12-03 20:05 TWSVM(非线性)\twinsvm_ker_predict.m
文件 1253 2012-05-31 20:13 TWSVM(非线性)\twinsvm_ker_train.m
目录 0 2014-12-03 19:54 TWSVM(线性)
目录 0 2014-12-03 20:07 TWSVM(非线性)
----------- --------- ---------- ----- ----
25930 16
- 上一篇:GameSourceCode.txt
- 下一篇:性能测试入门教程.ppt
评论
共有 条评论