“3.7 F1 Score”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第41行: 第41行:
 
ac代码
 
ac代码
  
#include<cstdio>
+
#include<cstdio>
#include<cstring>
+
#include<cstring>
#include<algorithm>
+
#include<algorithm>
#include<iostream>
+
#include<iostream>
#include<vector>
+
#include<vector>
#include<iomanip>
+
#include<iomanip>
using namespace std;
+
using namespace std;
 
int main()
 
int main()
 
{
 
{

2018年5月31日 (四) 14:43的版本

网络例题:

  • 描述

小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;

}