R语言 如何计算F1得分
在这篇文章中,我们将研究使用R语言中的各种包和它们的各种功能来计算F1得分的方法。
F1得分
F-score或F-measure是对一个测试的准确性的衡量。它由测试的精度和召回率计算得出,其中精度是真正的阳性结果的数量除以所有阳性结果的数量,包括那些没有被正确识别的结果;召回率是真正的阳性结果的数量除以所有应该被识别为阳性的样本的数量。
方法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"