机器学习基础(十三)之混淆矩阵(精准率和召回率andF1 score)

当数据是极度偏差的话,我们仅仅是靠准确率(account_score)是远远不够的
例如:某癌症的发病率是万分之一,如果我们的样本是10000人,那我们可以直接猜想发病的人是1人,那我们预测的准确率为99.99%。那还有啥意义呢???

混淆军阵:TN FP
FN TP
我们只关注为1的数据:
精准率(precision = TP / (FP + TP)):我们预测的有多准
召回率(recall = TP / (FN + TP)):我们只关注为真的预测率

def TN(y_true, y_predict):
    return np.sum( (y_true == 0) & (y_predict == 0) )
    
def FP(y_true, y_predict):
    return np.sum( (y_true == 0) & (y_predict == 1) )
    
def FN(y_true, y_predict):
    return np.sum( (y_true == 1) & (y_predict == 0) )
    
def TP(y_true, y_predict):
    return np.sum( (y_true == 1) & (y_predict == 1) )
    
def cofusion_matrix(y_true, y_predict):
    return np.array([
                    [TN(y_true, y_predict), FP(y_true, y_predict)],
                    [FN(y_true, y_predict), TP(y_true, y_predict)]
    ])
    
def precision(y_true, y_predict):
    return TP(y_true, y_predict) / (TP(y_true, y_predict) + FP(y_true, y_predict))
    
def recall(y_true, y_predict):
    return TP(y_true, y_predict) / (TP(y_true, y_predict) + FN(y_true, y_predict))

#sklearn中的混淆矩阵,精准率和召回率

from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score

F1 = 2 * (precision * recall) / ( recall + precision)  这样而已啦

猜你喜欢

转载自blog.csdn.net/qq_37982109/article/details/88650390