非線性二分類
matlab2018及之後的版本取消了svmtrain和svmclassify函式,取而代之的更多的fitcsvm和predict函式。但是也使得決策邊界無法直接生成,需要根據fitcsvm中得到的引數畫出決策邊界。
問題1:編寫程式,用svm方法解決線性二分類問題
資料集:testset-linear.txt。
要求:給出**、資料集分布示意圖、支撐向量座標及圖示、決策邊界圖示
資料集為100*3,前兩列為資料的座標,第三列為資料標籤(1、-1)。儲存在文字檔案中。
close all
clear
clc%
% 資料部分
data=
load
('testset-linear.txt');
sd=data(:
,1:2
);y=data(:
,3);
y=nominal
(y);
%標籤%
% 原始資料影象
subplot(1
,2,1
)gscatter(sd
(:,1
),sd(
:,2)
,y,'rg'
,'+*');
%%svmsvmmodel=
fitcsvm
(sd,y,
'kernelfunction'
,'linear');
[lable,score]
=predict
(svmmodel,sd);%
% 畫圖
subplot(1
,2,2
)h =
nan(3,
1);h
(1:2
)=gscatter(sd
(:,1
),sd(
:,2)
,y,'rg'
,'+*');
hold onh(
3)=plot(sd
(svmmodel.issupportvector,1)
,sd(svmmodel.issupportvector,2)
,'ko');
%畫出支援向量
%畫出決策邊界
w=-svmmodel.
beta(1
,1)/svmmodel.
beta(2
,1);
%斜率b=
-svmmodel.bias/svmmodel.
beta(2
,1);
%截距x_ =0:
圖1 實驗原始資料分布圖 圖2 svm二分類結果
問題2:編寫程式,用svm方法解決非線性二分類問題
資料集:test_nonlinear_svm.csv
要求:給出**、資料集分布示意圖、決策邊界圖示。
資料集說明:資料集大小為600*3,前兩列為資料的座標,第三列為資料標籤(1、-1)。儲存在csv檔案中
close all
clear
clc%
% 資料部分
data=
csvread
('test_nonlinear_svm.csv');
sd=data(:
,1:2
);y=data(:
,3);
y=nominal
(y);
%% 原始資料影象
subplot(1
,2,1
)gscatter(sd
(:,1
),sd(
:,2)
,y,'rg'
,'+*');
%% svm
svmmodel=
fitcsvm
(sd,y,
'boxconstraint',10
,'kernelfunction'
,'rbf'
,'kernelscale',2
^0.5*2
);%使用高斯核函式
%%svmmodel=
fitcsvm
(sd,y,
'kernelfunction'
,'rbf'
,'optimizehyperparameters',,
'hyperparameteroptimizationoptions'
,struct
('showplots'
,false));
%使用超引數優化
%% 畫圖
subplot(1
,2,2
)h =
nan(3,
1);h
(1:2
)=gscatter(sd
(:,1
),sd(
:,2)
,y,'rg'
,'+*');
hold onh(
3)=plot(sd
(svmmodel.issupportvector,1)
,sd(svmmodel.issupportvector,2)
,'ko');
%畫出支援向量
%畫出決策邊界
h =0.2
;[x1,x2]
=meshgrid
(min(sd
(:,1
)):h:max(sd
(:,1
)),min(sd
(:,2
)):h:max(sd
(:,2
)));
%得到所有取點的矩陣
[lable,score]
=predict
(svmmodel,[x1
(:),
x2(:)
]);scoregrid =
reshape
(score(:
,2),
size
(x1,1)
,size
(x2,2)
);contour
(x1,x2,scoregrid,[0
0]);
%繪製等高線
hold on
legend
('-1'
,'+1'
,'support vectors'
,'分界線');
axis equal
hold off
實驗採用兩種方法進行svm訓練。一種是未使用超引數優化的高斯核函式,另一種使用超引數優化。
圖3 實驗原始資料分布圖 圖4 svm高斯核函式二分類結果
圖5 實驗原始資料分布圖 圖6 svm超引數優化二分類結果
svm超引數優化僅顯示了其中一種結果,得到支援向量支援向量個數為20時的資料點。優化得到boxconstraint(框約束)最優值為171.22,kernelscale值為24.418。
圖7 超引數優化結果
非線性二分類在繪製決策邊界時採用了繪製等高線的思想,通過設定引數,使得繪製出score值為0的點的的等高線,也就是分界線。
二分類問題
模型 帶有relu啟用的dense層堆疊 對於二分類問題,網路的最後一層應該是只有乙個單元並使用sigmoid啟用的dense層,網路的輸出應該是0 1的標量,表示概率值 對於二分類問題的sigmoid標量輸出,應該使用binary crossentroy 二元交叉熵 損失函式 實驗 1 嘗試增加或...
二分類問題
深度學習中的基本問題就是這個,上午我還達到90 85 的acc,現在只有76 臥槽,我動 了啊?有鬼。明明沒怎麼改引數,卻再也回不到過去,這個trick不小啊。既然回不到過去,不妨重新開始吧。我套了一下vgg,發現網路太深了,根本跑不動,效果也不好,減少網路後,acc反而有提高,之前我還以為驗證集有...
二分類 多分類
怎麼樣把兩類的分類的模型推廣到多類上?答 a.一對多法 one versus rest,簡稱ovr svms 訓練時依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類別的樣本就構造出了k個svm。分類時將未知樣本分類為具有最大分類函式值的那類。b.一對一法 one versus on...