wine.mat
原始數據
在SVM程序算法中做分類可視化
目前可以選取兩個
輸入特征
且為做二分類的
問題
才能可視化
例如選取标簽為
1、2
的前兩列特征作為
輸入特征
%%
clc
clear all
load('C:\Users\Administrator\Desktop\wine1.mat')
data1 = wine(1:59,:);
data2 = wine(60:130,:);
%選擇兩維進行分類可視化
p = 2;
q = p 1;
%合并樣本數據
data0=[data1;data2];
train_data=data0(:,p:q);
train_label=data0(:,1);
%原始樣本分布圖灰度均值與灰度方差
figure('NumberTitle', 'on', 'Name','灰度均值與灰度方差');
hold on;
grid on;
plot(data1(:,p),data1(:,q),'*'),
plot(data2(:,p),data2(:,q),' '),
title('訓練樣本數據');
原始數據散點圖
分布可視化
在SVM中
徑向基核函數寬度
以及懲罰因子
需要叠代尋優
可采用交叉驗證的方式
找到一個較優的組合
%交叉驗證部分代碼略去
%cmd中參量為待優化選取參量
cmd = ['-c ',num2str( bestc ),' -g ',num2str( bestg )];
model=libsvmtrain(train_label,train_data,cmd); %徑向基函數
test_label=train_label;
test_data=train_data;
[predict_label,accuracy,dec_values] = svmpredict(test_label,test_data, model);
訓練和預測結束以後
對結果進行可視化呈現
程序設計
%%
demension1 = 1;
demension2 = 2;
minX = min(test_data(:, demension1));
maxX = max(test_data(:, demension1));
minY = min(test_data(:, demension2));
maxY = max(test_data(:, demension2));
gridX = (maxX - minX) ./ 100;
gridY = (maxY - minY) ./ 100;
minX = minX - 10 * gridX;
maxX = maxX 10 * gridX;
minY = minY - 10 * gridY;
maxY = maxY 10 * gridY;
[denseX, denseY] = meshgrid(minX:gridX:maxX, minY:gridY:maxY);
%%
model.Parameters(1) = 3;
[m,n]=size(denseX);
dense_data=[reshape(denseX,m*n, 1), reshape(denseY,m*n,1)];
dense_label = ones(m*n,1);
%密集點分類
model.Parameters(1) = 3;
[lab] =svmpredict(dense_label,dense_data, model);
dense_pre_lab = reshape(lab, m,n);
%%
%畫分類後的點及SV
figure('NumberTitle', 'on', 'Name','分類結果可視化');
hold on;
grid on;
m=length(predict_label);
for i=1:m
if (predict_label(i)==1) %标簽為1
a= plot(test_data(i, 1), test_data(i, 2), 'r ');
end
if (predict_label(i)==2) %标簽為2
b= plot(test_data(i, 1), test_data(i, 2), 'k*');
end
end
c= plot( model.SVs(:,1),model.SVs(:,2),'o' ); %支持向量
legend([a,b,c],'class1','class2','Support Vectors');
[C,h] = contour(denseX, denseY, dense_pre_lab,-1:1);
clabel(C,h,'Color','r'); %類似等溫曲線圖
%曲線參數調整
xlabel('灰度均值','FontSize',12);
ylabel('灰度方差','FontSize',12);
title('The visualization of classification','FontSize',12);
執行程序代碼
輸出可視化圖像
分類準率在
95%以上
值得思考的問題是
有支持向量
并未在曲線上
顯示PSO算法優化後
準确率随叠代尋優
的變化情況
曆經20次叠代尋優
結果達到最優
記錄此時返回優化參數即可
同理
可以查看其它特征輸入下
可視化情況
THE
END
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!