最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Matlab建立SVM,KNN和樸素貝葉斯模型分類繪制ROC曲線

2021-05-31 21:40 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=15508

原文出處:拓端數(shù)據(jù)部落公眾號

?

?

繪制ROC曲線通過Logistic回歸進(jìn)行分類

加載樣本數(shù)據(jù)。

load fisheriris

通過使用與versicolor和virginica物種相對應(yīng)的度量來定義二元分類問題。

pred = meas(51:end,1:2);

定義二進(jìn)制響應(yīng)變量。

resp = (1:100)'>50; ?% Versicolor = 0, virginica = 1

擬合邏輯回歸模型。

mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');

計算ROC曲線。使用邏輯回歸模型中的概率估計值作為得分。

perfcurve?將閾值存儲在數(shù)組中。

顯示曲線下的面積。

  1. AUC

  2. AUC = 0.7918

曲線下的面積為0.7918。最大AUC為1,對應(yīng)于理想分類器。較大的AUC值表示更好的分類器性能。

繪制ROC曲線

  1. plot(X,Y)

  2. xlabel('False positive rate')

  3. ylabel('True positive rate')

  4. title('ROC for Classification by Logistic Regression')

?

使用ROC曲線比較分類方法

?

加載樣本數(shù)據(jù)

load ionosphere

X?是351x34預(yù)測變量的矩陣。?Y?是類別標(biāo)簽的字符數(shù)組:??'b'?不良雷達(dá)回波和??'g'?良好雷達(dá)回波。

重新格式化因變量以適合邏輯回歸。

擬合一個邏輯回歸模型來估計雷達(dá)返回的后驗概率是一個不好的概率。

  1. mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');

  2. score_log = mdl.Fitted.Probability; % Probability estimates

使用得分的概率計算標(biāo)準(zhǔn)ROC曲線。

在相同的樣本數(shù)據(jù)上訓(xùn)練SVM分類器標(biāo)準(zhǔn)化數(shù)據(jù)。

mdlSVM = fitcsvm(pred,resp,'Standardize',true);

計算后驗概率。

第二列??score_svm?包含不良雷達(dá)收益的后驗概率。

使用SVM模型的分?jǐn)?shù)計算標(biāo)準(zhǔn)ROC曲線。

在同一樣本數(shù)據(jù)上擬合樸素貝葉斯分類器。

計算后驗概率(分?jǐn)?shù))

[~,score_nb] = resubPredict(mdlNB);

使用樸素貝葉斯分類的分?jǐn)?shù)計算標(biāo)準(zhǔn)ROC曲線。

將ROC曲線繪制在同一張圖上。

?

盡管對于較高的閾值,SVM可以產(chǎn)生更好的ROC值,但邏輯回歸通常更擅長區(qū)分不良雷達(dá)收益與良好雷達(dá)。樸素貝葉斯的ROC曲線通常低于其他兩個ROC曲線,這表明樣本內(nèi)性能比其他兩個分類器方法差。

比較所有三個分類器的曲線下面積。

  1. AUClog

  2. AUClog = 0.9659

  3. AUCsvm

  4. AUCsvm = 0.9489

  5. AUCnb

  6. AUCnb = 0.9393

Logistic回歸的AUC度量最高,而樸素的貝葉斯則最低。該結(jié)果表明,邏輯回歸對此樣本數(shù)據(jù)具有更好的樣本內(nèi)平均性能。

?

確定自定義內(nèi)核功能的參數(shù)值

?

本示例說明如何使用ROC曲線為分類器中的自定義內(nèi)核函數(shù)確定更好的參數(shù)值。

在單位圓內(nèi)生成隨機(jī)的一組點(diǎn)。

定義預(yù)測變量。將第一象限和第三象限中的點(diǎn)標(biāo)記為屬于正類別,而將第二象限和第二象限中的點(diǎn)標(biāo)記為負(fù)類。

  1. pred = [X1; X2];

  2. resp = ones(4*n,1);

  3. resp(2*n + 1:end) = -1; % Labels

創(chuàng)建函數(shù)mysigmoid.m?,該函數(shù) 接受要素空間中的兩個矩陣作為輸入,并使用S形內(nèi)核將其轉(zhuǎn)換為Gram矩陣。

使用Sigmoid內(nèi)核函數(shù)訓(xùn)練SVM分類器。使用標(biāo)準(zhǔn)化數(shù)據(jù)。

設(shè)置??gamma = 0.5?,使用調(diào)整后的S形核訓(xùn)練SVM分類器。



  1. SVMModel2 = fitPosterior(SVMModel2);

  2. [~,scores2] = resubPredict(SVMModel2);

計算兩個模型的ROC曲線和曲線下面積(AUC)。

繪制ROC曲線。

  1. plot(x1,y1)

  2. hold on

  3. plot(x2,y2)

  4. hold off


  5. title('ROC for classification by SVM');

?

將gamma參數(shù)設(shè)置為0.5的內(nèi)核函數(shù)可提供更好的樣本內(nèi)結(jié)果。

比較AUC度量。

  1. auc1

  2. auc2

  3. auc1 =


  4. 0.9518



  5. auc2 =


  6. 0.9985

伽瑪設(shè)置為0.5時曲線下的面積大于伽瑪設(shè)置為1時曲線下的面積。這也證實(shí)了伽瑪參數(shù)值為0.5會產(chǎn)生更好的結(jié)果。為了直觀比較這兩個伽瑪參數(shù)值的分類性能。

?

繪制分類樹的ROC曲線

?

加載樣本數(shù)據(jù)。

load fisheriris

列向量??species由三種不同物種的鳶尾花組成。雙矩陣??meas?包含對花朵的四種測量類型:萼片長度,萼片寬度,花瓣長度和花瓣寬度。所有度量單位均為厘米。

使用萼片的長度和寬度作為預(yù)測變量訓(xùn)練分類樹。

根據(jù)樹預(yù)測物種的分類標(biāo)簽和分?jǐn)?shù)?。

[~,score] = resubPredict(Model);

分?jǐn)?shù)是觀察值(數(shù)據(jù)矩陣中的一行)所屬類別的后驗概率。列??score?對應(yīng)于所指定的類??'ClassNames'

由于這是一個多類問題,因此不能僅將其??score(:,2)?作為輸入。這樣做將無法提供??perfcurve?有關(guān)兩個陰性類別(setosa和virginica)分?jǐn)?shù)的足夠信息。此問題與二元分類問題不同,在二元分類問題中,知道一個類別的分?jǐn)?shù)就足以確定另一個類別的分?jǐn)?shù)。因此,必須提供??perfcurve?將兩個否定類的得分納入考慮范圍的函數(shù)。一種函數(shù)是score(:,2)-max(score(:,1),score(:,3))。

X,默認(rèn)為假陽性率,??Y,默認(rèn)為真陽性率(召回率或敏感性)。正類標(biāo)簽為??versicolor。由于未定義否定類別,因此??perfcurve?假設(shè)不屬于肯定類別的觀測值屬于一個類別。該函數(shù)將其接受為否定類。


  1. suby = 12×2


  2. 0 ? ? ? ? 0

  3. 0.1800 ? ?0.1800

  4. 0.4800 ? ?0.4800

  5. 0.5800 ? ?0.5800

  6. 0.6200 ? ?0.6200

  7. 0.8000 ? ?0.8000

  8. 0.8800 ? ?0.8800

  9. 0.9200 ? ?0.9200

  10. 0.9600 ? ?0.9600

  11. 0.9800 ? ?0.9800

  12. ?



  13. subnames = 1x2 cell

  14. {'setosa'} ? ?{'virginica'}

在ROC曲線上繪制ROC曲線和最佳工作點(diǎn)。

?

找到與最佳工作點(diǎn)相對應(yīng)的閾值。

  1. T((X==OPTROCPT(1))&(Y==OPTROCPT(2)))

  2. ans = 0.2857

指定??virginica?為否定類,并計算和繪制ROC曲線??versicolor

同樣,必須提供??perfcurve?將否定類分?jǐn)?shù)納入考量的函數(shù)。要使用的函數(shù)的一個示例是score(:,2)-score(:,3)。

?

計算ROC曲線的逐點(diǎn)置信區(qū)間

加載樣本數(shù)據(jù)。

load fisheriris

僅將前兩個變量用作預(yù)測變量,來定義二元問題。

pred = meas(51:end,1:2);

定義二進(jìn)制因變量。

resp = (1:100)'>50; ?% Versicolor = 0, virginica = 1

擬合邏輯回歸模型。

通過垂直平均(VA)和使用bootstrap進(jìn)行采樣,計算真實(shí)正率(TPR)上的逐點(diǎn)置信區(qū)間。

'NBoot',1000?將引導(dǎo)樣本的數(shù)量設(shè)置為1000。??'XVals','All'?提示??perfcurve?返回??X,??Y和??T?所有分?jǐn)?shù)的Y?值,并X?使用垂直平均將所有值的值(真陽性率)? 平均? (假陽性率)。?默認(rèn)情況下將使用閾值平均來計算置信范圍。

繪制逐點(diǎn)置信區(qū)間。

errorbar(X,Y(:,1),Y(:,1)-Y(:,2),Y(:,3)-Y(:,1));

?

不一定總是可以控制誤報率(FPR,X?此示例中的? 值)。因此,可能希望通過閾值平均來計算真實(shí)正利率(TPR)的逐點(diǎn)置信區(qū)間。

繪制置信區(qū)間。

  1. figure()

  2. errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));

?

指定閾值計算ROC曲線。然后繪制曲線。


  1. figure()

  2. errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));

?

?

參考文獻(xiàn)

1.R語言多元Logistic邏輯回歸 應(yīng)用案例

2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實(shí)現(xiàn)

3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)

4.R語言泊松Poisson回歸模型分析案例

5.R語言回歸中的Hosmer-Lemeshow擬合優(yōu)度檢驗

6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實(shí)現(xiàn)

7.在R語言中實(shí)現(xiàn)Logistic邏輯回歸

8.python用線性回歸預(yù)測股票價格

9.R語言如何在生存分析與Cox回歸中計算IDI,NRI指標(biāo)


Matlab建立SVM,KNN和樸素貝葉斯模型分類繪制ROC曲線的評論 (共 條)

分享到微博請遵守國家法律
堆龙德庆县| 遂溪县| 沂水县| 长顺县| 彭山县| 昌黎县| 屯昌县| 禹城市| 郎溪县| 安乡县| 中牟县| 吴忠市| 汝阳县| 廊坊市| 镇巴县| 镇赉县| 东台市| 香河县| 普兰县| 宣武区| 会同县| 深州市| 五莲县| 舟曲县| 弋阳县| 中方县| 新河县| 深圳市| 左贡县| 金门县| 常德市| 霸州市| 获嘉县| 虹口区| 铜川市| 库伦旗| 沐川县| 辽宁省| 沙坪坝区| 仪征市| 万源市|