亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在R語言中使用caret包比較ROC曲線

發布時間:2021-04-06 15:37:08 來源:億速云 閱讀:372 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關怎么在R語言中使用caret包比較ROC曲線,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

操作

加載對應的包與將訓練控制算法設置為10折交叉驗證,重復次數為3:

library(ROCR)
library(e1071)
library("pROC")
library(caret)
library("pROC")
control = trainControl(method = "repaetedcv",
   number = 10,
   repeats =3,
   classProbs = TRUE,
   summaryFunction = twoClassSummary)

使用glm在訓練數據集上訓練一個分類器

glm.model = train(churn ~ .,
   data= trainset,
   method = "glm",
   metric = "ROC",
   trControl = control)

使用svm在訓練數據集上訓練一個分類器

svm.model = train(churn ~ .,
   data= trainset,
   method = "svmRadial",
   metric = "ROC",
   trControl = control)

使用rpart函數查看rpart在訓練數據集上的運行情況

rpart.model = train(churn ~ .,
   data = trainset,
   method = "svmRadial",
   metric = "ROC",
   trControl = control)

使用不同的已經訓練好的數據分類預測:

glm.probs = predict(glm.model,testset[,!names(testset) %in% c("churn")],type = "prob")
svm.probs = predict(svm.model,testset[,!names(testset) %in% c("churn")],type = "prob")
rpart.probs = predict(rpart.model,testset[,!names(testset) %in% c("churn")],type = "prob")

生成每個模型的ROC曲線,將它們繪制在一個圖中:

glm.ROC = roc(response = testset[,c("churn")],
  predictor = glm.probs$yes,
  levels = levels(testset[,c("churn")]))
plot(glm.ROC,type = "S",col = "red")
svm.ROC = roc(response = testset[,c("churn")],
  predictor = svm.probs$yes,
  levels = levels(testset[,c("churn")]))
plot(svm.ROC,add = TRUE,col = "green")
rpart.ROC = roc(response = testset[,c("churn")],
  predictor = rpart.probs$yes,
  levels = levels(testset[,c("churn")]))
plot(rpart.ROC,add = TRUE,col = "blue")

怎么在R語言中使用caret包比較ROC曲線

三種分類器的ROC曲線

說明

將不同的分類模型的ROC曲線繪制在同一個圖中進行比較,設置訓練過程的控制參數為重復三次的10折交叉驗證,模型性能的評估參數為twoClassSummary,然后在使用glm,svm,rpart,三種不同的方法建立分類模型。

從圖中可以看出,svm對訓練集的預測結果(未調優)是三種分類算法里最好的。

補充:R語言利用caret包比較模型性能差異

說明

我們可以通過重采樣的方法得對每一個匹配模型的統計信息,包括ROC曲線,靈敏度與特異度,然后基于這些統計信息來比較不同模型的性能差異。

操作

利用上節的信息,準備好glm分類模型,svm分類模型,rpart分類模型,并存放在glm.model,svm.model,rpart.model。

cv.values = resamples(list(glm = glm.model,svm =svm.model,rpart = rpart.model))
> summary(cv.values)
Call:
summary.resamples(object = cv.values)
Models: glm, svm, rpart 
Number of resamples: 30 
ROC 
  Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
glm 0.7597790 0.7927740 0.8040455 0.8106454 0.8347961 0.8760824 0
svm 0.8191998 0.8786439 0.8945208 0.8947360 0.9196775 0.9562556 0
rpart 0.6064540 0.7150320 0.7608241 0.7556544 0.8086731 0.8554750 0
Sens 
  Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
glm 0.08823529 0.1764706 0.2058824 0.2124930 0.2516807 0.3235294 0
svm 0.44117647 0.5294118 0.5882353 0.5956863 0.6470588 0.7941176 0
rpart 0.20000000 0.4117647 0.4705882 0.4787955 0.5514706 0.7352941 0
Spec 
  Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
glm 0.9393939 0.9645119 0.9721581 0.9702721 0.9796954 0.9898477 0
svm 0.9494949 0.9695431 0.9771574 0.9755004 0.9847716 0.9898990 0
rpart 0.9492386 0.9746193 0.9796954 0.9780359 0.9848485 1.0000000 0

使用dotplot函數繪制重采樣在ROC曲線度量中的結果:

dotplot(cv.values,metric = "ROC")

怎么在R語言中使用caret包比較ROC曲線

使用箱線圖繪制重采樣結果:

bwplot(cv.values,layout=c(3,1))

怎么在R語言中使用caret包比較ROC曲線

關于怎么在R語言中使用caret包比較ROC曲線就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭锦旗| 时尚| 盐城市| 阿克陶县| 繁峙县| 万全县| 马龙县| 乳山市| 太仓市| 崇文区| 万安县| 高雄市| 启东市| 剑川县| 康平县| 菏泽市| 高陵县| 文安县| 乌拉特前旗| 杭州市| 河南省| 双峰县| 鄄城县| 宁海县| 阿城市| 青龙| 剑川县| 文昌市| 宝鸡市| 柘荣县| 沛县| 宜川县| 郯城县| 浙江省| 中卫市| 都匀市| 商都县| 筠连县| 玉田县| 邹城市| 陵水|