#include<vector>
#include<iostream>
#include<fstream>
using namespace std;
// 查准率、查全率、BEP及F1率
vector<vector<double>> Precision_R(const vector<int> &label, const vector<int> &percision)
{
//LABEL真实标签 PERCISION预测输出
vector<int> templabel(label.size(),0);
vector<double> result;
vector<vector<double>> result_;
int TP(0), FN(0), FP(0);
double F1(0), P(0), R(0);
for (vector<int>::size_type i(0);i<label.size();++i)
{
templabel[percision[i]] = 1;
result.clear();
TP = 0;
FN = 0;
FP = 0;
for (auto &a : percision)
{
if ((label[a] == templabel[a]) && label[a] == 1)TP += 1;
if ((label[a] != templabel[a]) && label[a] == 1)FN += 1;
if ((label[a] != templabel[a]) && label[a] == 0)FP += 1;
}
P = 1.0*TP / (TP + FP);
R = 1.0*TP/(TP+FN);
F1 = 0;
if ((P+R)!=0)
F1 = 2 * P*R / (P + R);
result.push_back(P);
result.push_back(R);
result.push_back(F1);
result_.push_back(result);
}
//二维vector ROW是标签数 column:P/R/f1
return result_;
}
西瓜书-2.3答案 PR曲线F1c++版
最新推荐文章于 2022-10-31 22:28:45 发布