matlab分類識別算法

matlab分類識別算法


wine.mat

原始數據

matlab分類識別算法


在SVM程序算法中做分類可視化

目前可以選取兩個

輸入特徵


且為做二分類的

問題

才能可視化


例如選取標籤為

1、2

的前兩列特徵作為

輸入特徵

<code>%%clcclear allload('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('訓練樣本數據');/<code>

原始數據散點圖

分佈可視化


matlab分類識別算法

在SVM中

徑向基核函數寬度

以及懲罰因子

需要迭代尋優

可採用交叉驗證的方式

找到一個較優的組合

<code>%交叉驗證部分代碼略去%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);/<code> 

訓練和預測結束以後

對結果進行可視化呈現

程序設計

<code>%%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);%%%畫分類後的點及SVfigure('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*');      endendc= 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);/<code>

執行程序代碼

輸出可視化圖像

分類準率在

95%以上

matlab分類識別算法

值得思考的問題是

有支持向量

並未在曲線上


顯示PSO算法優化後

準確率隨迭代尋優

的變化情況

matlab分類識別算法

歷經20次迭代尋優

結果達到最優

記錄此時返回優化參數即可


同理

可以查看其它特徵輸入下

可視化情況

matlab分類識別算法


matlab分類識別算法

THE

END

matlab分類識別算法


分享到:


相關文章: