【SVM分類】基于哈里斯鷹算法優(yōu)化支持向量機(jī)SVM實(shí)現(xiàn)分類附matlab的代碼
【SVM分類】基于哈里斯鷹算法優(yōu)化支持向量機(jī)SVM實(shí)現(xiàn)分類附matlab的代碼
1 簡介
提出一種基于哈里斯鷹優(yōu)化算法(HHO)和支持向量機(jī)(SVM)的股價(jià)預(yù)測方法.針對SVM預(yù)測模型參數(shù)難以確定的問題,采用HHO算法對SVM中懲罰因子及核函數(shù)參數(shù)進(jìn)行優(yōu)化,構(gòu)建HHOSVM股價(jià)預(yù)測模型。
支持向量機(jī)是利用已知數(shù)據(jù)類別的樣本為訓(xùn)練樣本,尋找同類數(shù)據(jù)的空間聚集特征,從而對測試樣本進(jìn)行分類驗(yàn)證,通過驗(yàn)證可將分類錯誤的數(shù)據(jù)進(jìn)行更正。本文以體檢數(shù)據(jù)為數(shù)據(jù)背景,首先通過利用因子分析將高維數(shù)據(jù)進(jìn)行降維,由此將所有指標(biāo)整合成幾個綜合性指標(biāo);為降低指標(biāo)之間的衡量標(biāo)準(zhǔn)所引起的誤差,本文利用 MATLAB軟件將數(shù)據(jù)進(jìn)行歸一化處理,結(jié)合聚類分析將數(shù)據(jù)分類;最后本文利用最小二乘支持向量機(jī)分類算法進(jìn)行分類驗(yàn)證,從而計(jì)算出數(shù)據(jù)分類的準(zhǔn)確率,并驗(yàn)證了數(shù)據(jù)分類的準(zhǔn)確性和合理性。
2 部分代碼
function
[sFeat,Sf,Nf,curve] = jBHHO(feat,label,N,max_Iter,HO)
beta
=
1.5;
ub
=
1;
lb
=
0;
fun
=
@jFitnessFunction;
dim
=
size(feat,2);
X
=
zeros(N,dim);
for
i = 1:N
for
d = 1:dim
if
rand() > 0.5
X(i,d)
=
1;
end
end
end
fitR
=
inf;
fit
=
zeros(1,N);
Y
=
zeros(1,dim);
Z
=
zeros(1,dim);
curve
=
inf;
t
=
1;
%---Iteration
start-------------------------------------------------
while
t <= max_Iter
for
i = 1:N
fit(i)
=
fun(feat,label,X(i,:),HO);
if
fit(i) < fitR
fitR
=
fit(i);
Xrb
=
X(i,:);
end
end
X_mu
=
mean(X,1);
for
i = 1:N
E0
=
-1 + 2 * rand();
E
=
2 * E0 * (1 - (t / max_Iter));
if
abs(E) >= 1
q
=
rand();
if
q >= 0.5
k
=
randi([1,N]);
r1
=
rand();
r2
=
rand();
for
d = 1:dim
Xn
=
X(k,d) - r1 * abs(X(k,d) - 2 * r2 * X(i,d));
S
=
1 / (1 + exp(-Xn));
if
rand() < S
X(i,d)
=
1;
else
X(i,d)
=
0;
end
end
elseif
q < 0.5
r3
=
rand();
r4
=
rand();
for
d = 1:dim
Xn
=
(Xrb(d) - X_mu(d)) - r3 * (lb + r4 * (ub - lb));
S
=
1 / (1 + exp(-Xn));
if
rand() < S
X(i,d)
=
1;
else
X(i,d)
=
0;
end
end
end
elseif
abs(E) < 1
J
=
2 * (1 - rand());
r
=
rand();
if
r >= 0.5 && abs(E) >= 0.5
for
d = 1:dim
DX
=
Xrb(d) - X(i,d);
Xn
=
DX - E * abs(J * Xrb(d) - X(i,d));
S
=
1 / (1 + exp(-Xn));
if
rand() < S
X(i,d)
=
1;
else
X(i,d)
=
0;
end
end
elseif
r >= 0.5 && abs(E) < 0.5
for
d = 1:dim
DX
=
Xrb(d) - X(i,d);
Xn
=
Xrb(d) - E * abs(DX);
S
=
1 / (1 + exp(-Xn));
if
rand() < S
X(i,d)
=
1;
else
X(i,d)
=
0;
end
end
elseif
r < 0.5 && abs(E) >= 0.5
LF
=
jLevyDistribution(beta,dim);
for
d = 1:dim
Yn
=
Xrb(d) - E * abs(J * Xrb(d) - X(i,d));
S
=
1 / (1 + exp(-Yn));
if
rand() < S
Y(d)
=
1;
else
Y(d)
=
0;
end
Zn
=
Y(d) + rand() * LF(d);
S
=
1 / (1 + exp(-Zn));
if
rand() < S
Z(d)
=
1;
else
Z(d)
=
0;
end
end
fitY
=
fun(feat,label,Y,HO);
fitZ
=
fun(feat,label,Z,HO);
if
fitY <= fit(i)
fit(i)
=
fitY;
X(i,
:
) = Y;
end
if
fitZ <= fit(i)
fit(i)
=
fitZ;
X(i,
:
) = Z;
end
elseif
r < 0.5 && abs(E) < 0.5
LF
=
jLevyDistribution(beta,dim);
for
d = 1:dim
Yn
=
Xrb(d) - E * abs(J * Xrb(d) - X_mu(d));
S
=
1 / (1 + exp(-Yn));
if
rand() < S
Y(d)
=
1;
else
Y(d)
=
0;
end
Zn
=
Y(d) + rand() * LF(d);
S
=
1 / (1 + exp(-Zn));
if
rand() < S
Z(d)
=
1;
else
Z(d)
=
0;
end
end
fitY
=
fun(feat,label,Y,HO);
fitZ
=
fun(feat,label,Z,HO);
if
fitY <= fit(i)
fit(i)
=
fitY;
X(i,
:
) = Y;
end
if
fitZ <= fit(i)
fit(i)
=
fitZ;
X(i,
:
) = Z;
end
end
end
end
curve(t)
=
fitR;
fprintf(’
Iteration
%d Best (BHHO)= %f’,t,curve(t))
t
=
t + 1;
end
Pos
=
1:dim;
Sf
=
Pos(Xrb == 1);
Nf
=
length(Sf);
sFeat
=
feat(:,Sf);
end
function
LF = jLevyDistribution(beta,dim)
nume
=
gamma(1 + beta) * sin(pi * beta / 2);
deno
=
gamma((1 + beta) / 2) * beta * 2 ^ ((beta - 1) / 2);
sigma
=
(nume / deno) ^ (1 / beta);
u
=
randn(1,dim) * sigma;
v
=
randn(1,dim);
step
=
u ./ abs(v) .^ (1 / beta);
LF
=
0.01 * step;
end
3 仿真結(jié)果
4 參考文獻(xiàn)
[1]董婷. 支持向量機(jī)分類算法在MATLAB環(huán)境下的實(shí)現(xiàn)[J]. 榆林學(xué)院學(xué)報(bào), 2008, 18(4):3.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
-
2023年各省最新電價(jià)一覽!8省中午執(zhí)行谷段電價(jià)! 2023-01-03
-
PPT導(dǎo)出高分辨率圖片的四種方法 2022-09-22
-
全國消防救援總隊(duì)主官及簡歷(2023.2) 2023-02-10
-
盤點(diǎn) l 中國石油大慶油田現(xiàn)任領(lǐng)導(dǎo)班子 2023-02-28
-
我們的前輩!歷屆全國工程勘察設(shè)計(jì)大師完整名單! 2022-11-18
-
關(guān)于某送變電公司“4·22”人身死亡事故的快報(bào) 2022-04-26
