基于蜣螂算法優化的SVM資料分類預測 - 附代碼
文章目錄
- 基于蜣螂算法優化的SVM資料分類預測 - 附代碼
-
- 1.資料集
- 2.SVM模型建立
- 3.基于蜣螂算法優化的SVM
- 4.測試結果
- 5.參考文獻:
- 6.Matlab代碼
- 7.python代碼
摘要:為了提高SVM資料的分類預測準确率,對SVM中懲罰參數和核函數參數利用蜣螂算法進行優化。
1.資料集
wine 資料的來源是 UCI 資料庫 , 記錄的是在意大利同一區域裡三種不同品種的葡萄酒的化學成分分析,資料裡含有 178 個樣本,每個樣本含有 13 個特征分量(化學成分〉,每個樣本 的類别标簽已給。将這 178 個樣本的 50%作為訓練集,另 50%作為測試集 ,用訓練集對 SVM 進行訓練可以得到分類模型,再用得到的模型對測試集進行類别标簽預測。
整體資料存儲在 chapter_WineClass. mat ,解釋如下: classnumber = 3 ,記錄類别數目;
wine, 178 × 13 的 一個 double 型的矩陣,記錄 178 個樣本的 13 個屬性;
wine_ labels, 178 × 1的 一個 double 型的列向盤,記錄 178 個樣本各自的類别标簽 。
圖1.資料集
2.SVM模型建立
首先需要從原始資料裡把訓練集和測試集提取出來,然後進行一定的預處理(必要的時候 還需要進行特征提取),之後用訓練集對 SVM 進行訓練,最後用得到的模型來預測測試集的分類标簽。
圖2.SVM模型
其中資料預處理采用歸一化處理:對訓練集和測試集進行歸一化預處理,采用的歸一化映射如下 。
y = x − x m i n x m a x − x m i n (1) y = \frac{x-x_{min}}{x_{max} - x{min}} \tag{1} y=xmax−xminx−xmin(1)
3.基于蜣螂算法優化的SVM
蜣螂算法的具體原理參考部落格:https://blog.csdn.net/u011835903/article/details/128280084。
蜣螂算法的優化參數為SVM中懲罰參數c和核函數參數g。适應度函數為SVM對測試集的預測正确率。
f i n t e n e s s = m a x ( a c c u r a c y [ p r e d i c t ( t e s t ) ] finteness = max(accuracy[predict(test)] finteness=max(accuracy[predict(test)]
4.測試結果
蜣螂參數設定如下:
%目标函數
fun = @getObjValue; %适應度函數
% 優化參數的個數 (c、g)
dim = 2;
% 優化參數的取值下限
lb = [10^-1, 2^-5];
ub = [10^1, 2^4];
pop =10; %蜣螂數量
Max_iteration=20;%最大疊代次數
從最終結果來看,經過蜣螂優化的SVM測試集預測正确率為100%。而未經過優化的SVM的正确率為98.78%(資料來源于《MATLAB神經網絡43個案例分析》)
5.參考文獻:
書籍《MATLAB神經網絡43個案例分析》