• 大小: 16KB
    文件类型: .rar
    金币: 2
    下载: 3 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: TWSVM  

资源简介

实现孪生支持向量机的程序,里面有示例有注释,通俗易懂

资源截图

代码片段和文件信息

% 线性孪生支持向量机二类分类算法


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


评论

共有 条评论

相关资源