資源簡介
支持向量機是一種基于統計學習理論的機器學習方法.在傳統的支持向量機模型中,模型參數需要用試湊的辦法,一個基于粒子群算法的參數選擇機制,這可以大大減少模型的運算時間

代碼片段和文件信息
%%?清空環境
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)?V(j1)?=?Vcmin;
end
if?V(j2)?>?Vgmax
V(j2)?=?Vgmax;
end
if?V(j2)?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)?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
- 上一篇:IEMOCAP Dataset
- 下一篇:天天影視E4A源碼 支持在線支付 代理功能
評論
共有 條評論