tft每日頭條

 > 生活

 > matlab中輪廓檢測算法

matlab中輪廓檢測算法

生活 更新时间:2025-01-04 16:51:47

matlab中輪廓檢測算法(matlab分類識别算法)1

wine.mat

原始數據

matlab中輪廓檢測算法(matlab分類識别算法)2

在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('訓練樣本數據');

原始數據散點圖

分布可視化

matlab中輪廓檢測算法(matlab分類識别算法)3

在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%以上

matlab中輪廓檢測算法(matlab分類識别算法)4

值得思考的問題是

有支持向量

并未在曲線上

顯示PSO算法優化後

準确率随叠代尋優

的變化情況

matlab中輪廓檢測算法(matlab分類識别算法)5

曆經20次叠代尋優

結果達到最優

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

同理

可以查看其它特征輸入下

可視化情況

matlab中輪廓檢測算法(matlab分類識别算法)6

matlab中輪廓檢測算法(matlab分類識别算法)7

THE

END

matlab中輪廓檢測算法(matlab分類識别算法)8

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved