• 大小: 2KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-28
  • 语言: 其他
  • 标签: 亲测可用  

资源简介

支持向量机是一种基于统计学习理论的机器学习方法.在传统的支持向量机模型中,模型参数需要用试凑的办法,一个基于粒子群算法的参数选择机制,这可以大大减少模型的运算时间

资源截图

代码片段和文件信息

%% 清空环境
clc
clear

data_set=xlsread(‘dataset.xlsx‘);
%% 训练样本输入/输出--
%%4类,每种类型有40组数据,
data_set1 = data_set(1:50:); % 40*11
data_set2 = data_set(51:100:);
data_set3 = data_set(101:150:);
data_set4 = data_set(151:200:);
%训练样本
m=30; % 每种选取前30组数据组成训练样本;
input_train_1=data_set1(1:m1:4);   %%第一种类型选取前m组数据;
output_train_1=data_set1(1:m5);    %%对应的标签页选择前m组,以此类推。。。。
input_train_2 =data_set2(1:m1:4);
output_train_2=data_set2(1:m5); 
input_train_3 =data_set3(1:m1:4);
output_train_3=data_set3(1:m5); 
input_train_4 =data_set4(1:m1:4);
output_train_4=data_set4(1:m5); 

train_values=[input_train_1;input_train_2;input_train_3;input_train_4];
train_labels=[output_train_1;output_train_2;output_train_3;output_train_4];
%% 测试样本输入/输出--
input_test_1=data_set1(m+1:end1:4);
output_test_1=data_set1(m+1:end5);
input_test_2 =data_set2(m+1:end1:4);
output_test_2=data_set2(m+1:end5);
input_test_3 =data_set3(m+1:end1:4);
output_test_3=data_set3(m+1:end5);
input_test_4 =data_set4(m+1:end1:4);
output_test_4=data_set4(m+1:end5);
test_values=[input_test_1;input_test_2;input_test_3;input_test_4];
test_labels=[output_test_1;output_test_2;output_test_3;output_test_4];

[train_valuespstrain] = mapminmax(train_values‘);
pstrain.ymin = 0;
pstrain.ymax = 1;
[train_valuespstrain] = mapminmax(train_valuespstrain);

[test_valuespstest] = mapminmax(test_values‘);
pstest.ymin = 0;
pstest.ymax = 1;
[test_valuespstest] = mapminmax(test_valuespstest);

train_values = train_values‘;
test_values = test_values‘;

%% 参数初始化

%粒子群算法中的两个参数
c1 = 1.6; % c1 belongs to [02] 
c2 = 1.5; % c2 belongs to [02] 

maxgen=300;% 进化次数
sizepop=30;% 种群规模

popcmax=10^(2);
popcmin=10^(-1);
popgmax=10^(3);
popgmin=10^(-2);
k = 0.6; % k belongs to [0.11.0];
Vcmax = k*popcmax;
Vcmin = -Vcmax ;
Vgmax = k*popgmax;
Vgmin = -Vgmax ;

% SVM参数初始化
v = 3;

%% 产生初始粒子和速度
for i=1:sizepop
 % 随机产生种群
pop(i1) = (popcmax-popcmin)*rand+popcmin; % 初始种群
pop(i2) = (popgmax-popgmin)*rand+popgmin;
V(i1)=Vcmax*rands(1);% 初始化速度
V(i2)=Vgmax*rands(1);
% 计算初始适应度
cmd = [‘-v ‘num2str(v)‘ -c ‘num2str( pop(i1) )‘ -g ‘num2str( pop(i2) )];
fitness(i) = svmtrain(train_labels train_values cmd);
fitness(i) = -fitness(i); 
end

% 找极值和极值点

[global_fitness bestindex]=min(fitness); % 全局极值
local_fitness=fitness;% 个体极值初始化

global_x=pop(bestindex:);% 全局极值点
local_x=pop;% 个体极值点初始化

tic

%% 迭代寻优
for i=1:maxgen

    for j=1:sizepop

%速度更新
wV = 0.9; % wV best belongs to [0.81.2]
V(j:) = wV*V(j:) + c1*rand*(local_x(j:) - pop(j:)) + c2*rand*(global_x - pop(j:));
if V(j1) > Vcmax
V(j1) = Vcmax;
end
if V(j1) < Vcmin
V(j1) = Vcmin;
end
if V(j2) > Vgmax
V(j2) = Vgmax;
end
if V(j2) < Vgmin
V(j2) = Vgmin;
end
%种群更新
wP = 0.6;
pop(j:)=pop(j:)+wP*V(j:);
if pop(j1) > popcmax
pop(j1) = popcmax;
end
if pop(j1) < popcmin
pop(j1) = popcmin;
end
if pop(j2) > popgmax
pop(j2) = popgmax;
end
if pop(j2

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4374  2019-10-31 20:27  PSO-SVM\PSSVM.m

     目录          0  2019-10-28 21:47  PSO-SVM

----------- ---------  ---------- -----  ----

                 4374                    2


评论

共有 条评论