资源简介
借助(线性)孪生支持向量机对二分类问题的求解程序。
代码片段和文件信息
% 支持向量机Matlab工具箱C-SVC 孪生线性核函数二类分类算法
% 使用平台 - Matlab7.12
close all
clear
clc
load N_p % 正类点数据,特征信息存放在列里面
load N_n % 负类点数据,特征信息存放在列里面
%% 第一步:数据预处理
% 由原来的数据产生80%的训练数据和20%的预测数据
n_p=size(N_p2);
n_n=size(N_n2);
n1=randperm(n_p); % 对1到n的n个正整数进行随机不重复的排列,形成一个1行n列的矩阵
n1=n1‘;
n2=randperm(n_n);
n2=n2‘;
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_pdata_train_n]; % 训练数据集(含正负类)
Y_train=[ones(1f_p)-ones(1f_n)]; % 训练数据标签集
data_predict_p=N_p(:n1(f_p+1:end)); % 正类预测数据
data_predict_n=N_n(:n2(f_n+1:end)); % 负类预测数据
data_predict=[data_predict_pdata_predict_n]; % 预测数据集(含正负类)
Y_predict=[ones(1n_p-f_p)-ones(1n_n-f_n)]; % 预测数据标签集
% 相关参数初始化
bestAccuracy=0;
k=0;
c1min=-2;
c1max=2;
c2min=-2;
c2max=2;
aac=rand(101);
best_c1=0;best_c2=0;
data_train=data_train‘;
Y_train=Y_train‘;
%% 第二步:数据训练寻找最优参数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); % 分出正类点的位置 数据信息全在行里面
% 关于ismember函数的具体用法,使用help ismember可以进一步了解
A=train_data(groupA:); % 正类训练数据 数据信息全在行里面
B=train_data(groupB:);
%用模糊支持向量机训练数据
[v1v2]=twinsvm_lin_train(ABc1c2);
%下面用验证集进行验证并记录此时的准确率
row=size(test_data1);
result=rand(row1);
test_data1=[test_dataones(row1)];
distance1=abs(test_data1*v1);
distance2=abs(test_data1*v2);
test_distance=min(distance1distance2);
for run1=1:row
if test_distance(run1)==distance1(run1)
result(run1)=1;
else
result(run1)=-1;
end
end
for run1=1:row
if test_data_label(run1)==result(run1)
k=k+1;
end
end
aac(run)=k/row;
k=0;
end
cv=sum(aac)/10;
if (cv>bestAccuracy)
bestAccuracy=cv;
best_c1=c1;
best_c2=c2;
e
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1780 2012-05-10 20:37 N_p.mat
文件 1290 2012-07-23 14:28 twinsvm_lin_train.m
文件 5550 2012-09-03 17:56 lin_main.m
文件 1782 2012-05-10 20:36 N_n.mat
----------- --------- ---------- ----- ----
10402 4
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论