R语言 绘制ROC曲线

R语言 绘制ROC曲线

误差度量使我们能够评估和论证模型在特定数据集上的表现。ROC图就是这样一个误差度量。一个分类误差度量是ROC图,也被称为ROC AUC曲线。也就是说,它评估了分类机器学习算法的性能和结果。

更具体地说,ROC曲线代表了数值的概率曲线,而AUC是对不同数值/标签组的可分离性的衡量。ROC AUC曲线可以用来分析和得出结论,即有多少数值被模型根据标签正确区分和分类。

AUC分数越高,预测值的预测效果就越好。用技术术语来说,ROC曲线是一个模型的真阳性率和假阳性率之间的关系。现在让我们在下面的章节中尝试应用ROC曲线的概念。

方法一:使用plot()函数

如前所述,我们可以使用ROC图来评估机器学习模型。因此,让我们尝试将ROC曲线的概念应用于Logistic回归模型。

在这个例子中,我们将使用Logistic回归对银行贷款违约者数据集进行建模。ROC曲线将使用’pROC’库中的plot()函数进行绘制。该数据集可以在这里找到。

  • 首先,我们使用read.csv()函数将数据集加载到环境中。
  • 在建模之前,对数据集进行分割是非常关键的。因此,我们使用R文档中的createDataPartition()函数将数据集抽成训练和测试数据值。
  • 为了评估模型的性能,我们建立了误差指标,如精确度、召回率、准确率、F1得分、ROC图等。
  • 之后,我们使用R glm()函数对我们的数据集进行Logistic回归。然后使用predict()函数在测试数据上测试模型,并计算误差指标。
  • 最后,我们使用roc()方法计算模型的roc AUC分数,并使用’pROC’库中的plot()函数绘制它。
rm(list=ls())
 
# Setting the working directory
setwd("D:/Edwisor_Project - Loan_Defaulter/")
getwd()
 
# Load the dataset
gfgDataset = read.csv("bank-loan.csv", header=TRUE)
 
### Data SAMPLING ####
library(caret)
set.seed(101)
split = createDataPartition(data$default, p=0.81, list=FALSE)
train_data = data[split, ]
test_data = data[-split, ]
 
# error metrics -- Confusion Matrix
err_metric = function(GFGCM)
{
    GFGTN = GFGCM[1, 1]
    GFGRATE = GFGCM[2, 2]
    FP = GFGCM[1, 2]
    FN = GFGCM[2, 1]
    gfgPrecise = (GFGRATE)/(GFGRATE+FP)
    recall_score = (FP)/(FP+GFGTN)
    f1_score = 2*((gfgPrecise*recall_score)/(gfgPrecise+recall_score))
    accuracy_model = (GFGRATE+GFGTN)/(GFGRATE+GFGTN+FP+FN)
    False_positive_rate = (FP)/(FP+GFGTN)
    False_negative_rate = (FN)/(FN+GFGRATE)
    print(paste("GfgPrecise value of the model: ", round(gfgPrecise, 2)))
    print(paste("Accuracy of the model: ", round(accuracy_model, 2)))
    print(paste("Recall value of the model: ", round(recall_score, 2)))
    print(paste("False Positive rate of the model: ", round(False_positive_rate, 2)))
    print(paste("False Negative rate of the model: ", round(False_negative_rate, 2)))
    print(paste("f1 score of the model: ", round(f1_score, 2)))
}
 
# 1. Logistic regression
logit_m = glm(formula=default~., data=train_data, family='binomial')
summary(logit_m)
logit_P = predict(logit_m, newdata=test_data[-13], type='response')
logit_P < - ifalse(logit_P > 0.5, 1, 0)  # Probability check
GFGCM = table(test_data[, 13], logit_P)
print(GFGCM)
err_metric(GFGCM)
 
# ROC-curve using pROC library
library(pROC)
roc_score = roc(test_data[, 13], logit_P)  # AUC score
plot(roc_score, main="ROC curve -- Logistic Regression ")
R

在R编程中绘制ROC曲线

方法2:使用roc.plot()函数

为了绘制模型的ROC-AUC曲线,我们可以在R编程中使用另一个叫做验证的库。要使用该函数,我们必须首先安装并导入验证库到我们的环境中。

之后,我们使用roc.plot()函数绘制数据,以清楚地了解数据值的 “敏感性 “和 “特异性”,如下图所示。

install.packages("starter")
 
library(verification)
x<- c(0,0,0,1,0,0)
y<- c(.7, .7, 0, 1,5,.6)
 
gfgData<-gfgData.frame(x,y)
names(data)<-c("plot","axis")
roc.plot(gfgDatayes, gfgDatano)
R

在R编程中绘制ROC曲线

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册