本文共 4482 字,大约阅读时间需要 14 分钟。
Predicted Positive | Predicted Negative | |
---|---|---|
Actually Positiva | True Positive, TP | False Negative, FN |
Actually Negative | False Positive, FP | True Negative, TN |
查准率(precision):
查全率(recall):
F-measure标准:
from sklearn.metrics import f1_score
P/R曲线更适合正类别比负类别更重要的任务,或者说正例数目比负例数目小得多的任务。信息检索或欺诈检索是它的典型应用领域。
from sklearn.metrics import precision_recall_curve
ROC曲线对分类器的一般效果提供了一个更好的描述。ROC曲线刻画的是真正率与假正率之间的关系。
y轴 | x轴 | |
---|---|---|
P/R | Precision = TP / (TP + FP) | recall = TP / (TP + FN) |
ROC | TPR = TP / (TP + FN) | FPR = FP / (FP + TN) |
ROC和P/R曲线所假定的是二分类问题,画图时可以显示分类器在“1 vs REST”分类中的效果。
绘图过程:
若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。
AUC可以通过对ROC曲线下各部分的面积求和而得。假定ROC曲线是由坐标为{(x1,y1),(x2,y2),…,(xm,ym)}的点按序连接而形成(x1=0,xm=1),则AUC可估算为:
def plotROC(predStrengths, classLabels): import matplotlib.pyplot as plt cur = (1.0,1.0) #cursor ySum = 0.0 #variable to calculate AUC numPosClas = sum(array(classLabels)==1.0) yStep = 1/float(numPosClas); xStep = 1/float(len(classLabels)-numPosClas) sortedIndicies = predStrengths.argsort()#get sorted index, it's reverse fig = plt.figure() fig.clf() ax = plt.subplot(111) #loop through all the values, drawing a line segment at each point for index in sortedIndicies.tolist()[0]: if classLabels[index] == 1.0: delX = 0; delY = yStep; else: delX = xStep; delY = 0; ySum += cur[1] #draw line from cur to (cur[0]-delX,cur[1]-delY) ax.plot([cur[0],cur[0]-delX],[cur[1],cur[1]-delY], c='b') cur = (cur[0]-delX,cur[1]-delY) ax.plot([0,1],[0,1],'b--') plt.xlabel('False positive rate'); plt.ylabel('True positive rate') plt.title('ROC curve for AdaBoost horse colic detection system') ax.axis([0,1,0,1]) plt.show() print("the Area Under the Curve is: ", ySum * xStep)
在多分类问题中使用混淆矩阵(confusion matrix)评估正确率:对于多分类问题,我们不应该把关注点只局限在能否对体裁进行正确分类上,还应该仔细看一下那些互相混淆的类别。
from sklearn.metrics import confusion_matrixcm = confusion_matrix(y_test, y_pred)print(cm)
在高风险分类(例如:高死亡率疾病监测、自动驾驶等场景)中控制假阳性率是非常重要的,由算法得出的结果将对个人产生巨大的影响。遗漏一名潜在病人的风险,远远高于误诊一名正常人。因此,我们希望在保证分类器假阳性率(即错误地将负样本分类为正样本的概率) 低于某个阈值 τ 的前提下,最小化其误分正样本的概率。
代表性方法:
它主要用于衡量机器翻译相对于人类翻译的质量,它使用了精确度量的修改形式。
计算BLEU分数的步骤:
这里BP是简短的惩罚项,r和c分别是参考翻译和候选翻译中的词的数量,w表示权重,P表示精度值
引入的惩罚项会惩罚那些短于参考翻译的候选翻译。例如,如果上述候选翻译的参考翻译是“The cat”,那么它对于单个词和两个词将具有很高的精度,因为两个单词都以相同的顺序出现在参考翻译中。但是,长度太短的话,实际上并不能很好的反映参考翻译的含义。有了这个简短的惩罚,候选翻译必须在长度、相同单词和单词顺序方面与参考翻译相匹配才能获得高分。
同:
《Building Machine Learning Systems with Python》 P85 5.7 P146 9.4.4
《机器学习实战》 P128 7.7.1
《机器学习》 P28 2.3
《BLEU: a Method for Automatic Evaluation of Machine Translation
》
转载地址:http://nioji.baihongyu.com/