3.7 F1 Score
来自CloudWiki
网络例题:
- 描述
小Hi和他的小伙伴们一起写了很多代码。时间一久有些代码究竟是不是自己写的,小Hi也分辨不出来了。
于是他实现了一个分类算法,希望用机器学习实现自动分类。
为了评价这个分类算法的优劣,他选出了N份有标记的代码作测试集,并决定用F1 Score作为评价标准。
给出N份代码的实际作者是不是小Hi以及分类算法预测的结果,请你计算F1 Score。
- 输入
第一行包含一个整数N。(1 <= N <= 1000)
以下N行每行包含两个字符(+或-)。第一个字符代表这份代码的实际作者是不是小Hi(+代表是,-代表不是),第二个代表预
测的作者是不是小Hi(+代表是,-代表不是)。
- 输出
一个百分数,X%,代表答案,X保留两位小数。
样例输入
4
+ +
+ -
- +
- -
样例输出
50.00%
ac代码
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<vector> #include<iomanip> using namespace std; int main() { int n; double tp=0,fp=0,tn=0,fn=0; char ans, pre; cin >> n; for (int i = 0;i < n;i++) { cin >> ans >> pre; if (ans == '+'&&pre == '+') tp++; else if (ans == '+'&&pre == '-') fn++; else if (ans == '-'&&pre == '-') tn++; else if (ans == '-'&&pre == '+') fp++; } double p = (tp + fp)==0?1:tp / (tp + fp); double r = (tp + fn)==0?1:tp / (tp + fn); double res = (p + r)==0? 2*p*r :2*p*r /(p + r); printf("%.2lf%s\n", res*100,"%"); return 0;
}