使用mlpack解决机器学习基本算法之一准确率、精准率、召回率、F1以及mlpack中的Classify

一 首先明确以下概念:

True Positive -实际值为真,模型预测值为真。

False Positive - Type I error.实际值为假,模型预测值为真。

True Negative -实际值为假,模型预测值为假。

False Negative - Type II error.实际值为真,模型预测值为假。

truePos:正确分类的样本数。  truePos + falsePos:总的positive样本数。

二 准确率

Accuracy:正确预测数correct、预测总数yTrue.n_elem

double Accuracy(const arma::Row<size_t>& yPreds, const arma::Row<size_t>& yTrue)//predicts labels;true labels
{
    const size_t correct = arma::accu(yPreds == yTrue);
    return (double)correct / (double)yTrue.n_elem;//correct predict / predict all count
}

Accuracy(output,Ytest)=>output:正确预测数。Ytest.n_elem:预测总数

 

三 精准率

预测为正的样本中有多少是真正的正样本。

Precision:正确分类的positive样本数/总的positive样本数

double Precision(const size_t truePos, const size_t falsePos)
{
    return (double)truePos / (double)(truePos + falsePos);
}

四 召回率

 表示样本中的正例有多少被预测正确了。有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)

Recall:正确分类的positive样本数/正确分类的positive样本数+错误分类的negative样本数。

double Recall(const size_t truePos, const size_t falseNeg)
{
    return (double)truePos / (double)(truePos + falseNeg);
}

五 F1值

为正确率和召回率的调和平均值

double F1Score(const size_t truePos, const size_t falsePos, const size_t falseNeg)
{
    double prec = Precision(truePos, falsePos);
    double rec = Recall(truePos, falseNeg);
    return 2 * (prec * rec) / (prec + rec);
}

参数(正确分类的positive样本数==truePos,错误分类的positive样本数 == falsePos,错误分类的negative样本数 == falseNeg)

Prec : 精准率。

Rec:召回率。

F1的值是:2*(精准率*召回率)/(精准率 + 召回率).

六 Classify

对给定的点进行分类,并返回给定矩阵中每个类的概率估计。Predictions:储存每个点的预测标签。data:数据集。probabilities:每个点的类别概率。

dt.Classify(Xtest,output,probs) 使用经过训练的模型对测试集进行分类并获得概率。

Probs:每个点的类别概率。Output:对每个点的预测结果。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值