R语言 如何计算F1得分

R语言 如何计算F1得分

在这篇文章中,我们将研究使用R语言中的各种包和它们的各种功能来计算F1得分的方法。

F1得分

F-score或F-measure是对一个测试的准确性的衡量。它由测试的精度和召回率计算得出,其中精度是真正的阳性结果的数量除以所有阳性结果的数量,包括那些没有被正确识别的结果;召回率是真正的阳性结果的数量除以所有应该被识别为阳性的样本的数量。

如何在R语言中计算F1得分?

方法1:使用Mlmetrics软件包的F1_Score函数

在这种方法下,用户需要在当前工作的R控制台中安装并导入Mlmetrics包,然后,用户需要从该包中调用F1_Score()函数,并将所需参数传给它,以获得预测值和实际值的F1分数,然后,该函数将返回给定的实际值和预测值的F1分数。

用R语言安装和导入Mlmetrics包的语法

install.packages("MLmetrics")
library("MLmetrics")

F1_Score()函数: 该函数用于计算F1得分。

语法: F1_Score(y_true, y_pred, positive = NULL)

参数

  • y_true。地面真相(正确的)0-1标签矢量
  • y_pred。预测的标签向量,由一个分类器返回。
  • positive 。一个可选的字符串,表示对应于 “正面 “结果的因素水平。

例子: 在这个例子中,我们创建了两个10个数据点的向量,一个是实际值,另一个是预测值,在MLmetrics软件包的F1_Score()函数的帮助下,我们在R程序中计算f1得分。

# Import Mlmetrics library
library(MLmetrics)
 
# Create Data
actual = c(1,2,28,1,5,6,7,8,9,10)
predicted = c(1,2,3,4,5,6,7,8,9,10)
 
# Calculate F!_Score
F1_Score(predicted,actual)

输出

[1] 0.6666667

方法2:使用caret包的confusionMatrix()函数

在这种计算F1分数的方法中,用户需要首先在工作的R控制台中安装并导入caret包,然后进一步调用confusionMatrix()函数并向其传递所需的参数。这将在R语言中把给定数据的F1得分返回给用户。

在R语言中安装和导入caret软件包的语法

install.packages("caret")
library("caret")

confusionMatrix()函数: 计算观察类和预测类的交叉表以及相关的统计数据。

语法: confusionMatrix(data, reference, positive = NULL, dnn = c(“Prediction”, “Reference”), …)

参数。

  • data:一个预测类的因子
  • reference:一个作为真实结果的类的因子
  • positive:对应于 “正面 “结果的因子水平的可选字符串(如果这对你的数据有意义)。
  • dnn:表的dimnames的一个字符向量。
  • …:要传递的选项。

例子: 在这个例子中,我们有两个向量,一个是实际数据,另一个是预测数据,此外,我们使用confusionMatrix()函数来获取给定数据的F1得分。

# Import caret library
library(caret)
 
# Create Data
actual <- factor(rep(c(1, 2),
                     times=c(16, 24)))
predicted <- factor(rep(c(1, 2, 1, 2),
                        times=c(12, 4, 7, 17)))
 
# create confusion matrix
confusionMatrix(predicted, actual,
                mode = "everything",
                positive="1")

输出

Confusion Matrix and Statistics

          Reference
Prediction  1  2
         1 12  7
         2  4 17

               Accuracy : 0.725          
                 95% CI : (0.5611, 0.854)
    No Information Rate : 0.6            
    P-Value [Acc > NIR] : 0.07095        

                  Kappa : 0.4444         

 Mcnemar's Test P-Value : 0.54649        

            Sensitivity : 0.7500         
            Specificity : 0.7083         
         Pos Pred Value : 0.6316         
         Neg Pred Value : 0.8095         
              Precision : 0.6316         
                 Recall : 0.7500         
                     F1 : 0.6857         
             Prevalence : 0.4000         
         Detection Rate : 0.3000         
   Detection Prevalence : 0.4750         
      Balanced Accuracy : 0.7292         

       'Positive' Class : 1 

方法3:计算模型的F1分数。

在这个方法中,为了计算模型的F1得分,用户需要首先创建关于给定数据的模型,然后用户需要计算该模型的混淆矩阵,进一步用混淆矩阵作为参数的err_metric()函数在R编程语言中传递所建模型的F1得分。

语法: err_metric(cm)

其中, cm:混淆矩阵

例子: 在这个例子中,我们将简单地创建一个给定数据集的逻辑回归模型,然后用R编程语言中的err_metrics()函数来计算f1得分。

数据集的链接。

library(caTools)
data = read.csv('Social_Network_Ads.csv')
data = data[3:5]
split = sample.split(data$Purchased, SplitRatio = 0.75)
train = subset (data, split == TRUE)
test = subset (data, split == FALSE)
train[-3] = scale(train[-3])
test[-3] = scale(test[-3])
classifier = glm(formula = Purchased ~ .,
                 family = binomial,
                 data = train)
prob_pred = predict (classifier, type = 'response',
                     newdata = test[-3])
y_pred = ifelse (prob_pred > 0.5, 1, 0)
cm = table (test[, 3], y_pred > 0.5)
err_metric(cm)

输出

[1] "Precision value of the model:  0.72"
[1] "Accuracy of the model:  0.77"
[1] "Recall value of the model:  0.12"
[1] "False Positive rate of the model:  0.12"
[1] "False Negative rate of the model:  0.42"
[1] "f1 score of the model:  0.21"

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程