多分类模型roc-auc的计算以及precision、recall、accuracy等的计算

TP:True被预测成Positive
TN:True被预测成Negative
FP:False被预测成Positive
FN:False被预测成Negative
a c c u r a c y = T P + T N T P + T N + F P + F N accuracy=\frac {TP+TN}{TP+TN+FP+FN} accuracy=TP+TN+FP+FNTP+TN
p r e c i s i o n = T P T P + T N precision=\frac {TP}{TP+TN} precision=TP+TNTP
r e c a l l = T P T P + F P recall=\frac {TP}{TP+FP} recall=TP+FPTP
F 1 = 2 ∗ p r e c i s i o n ∗ r e c a l l p r e c i s i o n + r e c a l l F1=\frac {2*precision*recall}{precision+recall} F1=precision+recall2precisionrecall
在已经设置好模型的基础上,log_model就是训练好的模型,roc-auc的计算:

# 预测分类
y_pred = log_model.predict(X_test)
# 预测概率
y_score = log_model.predict_proba(X_test)
# 对真实值进行二进制处理
n_classes = 6
y_binary = label_binarize(y_test, np.arange(n_classes))
fpr, tpr, thresholds = fpr, tpr, thresholds = metrics.roc_curve(y_one_hot.ravel(), y_score.ravel())
auc = metrics.auc(fpr, tpr)

计算混淆矩阵:

confusion_matrix = metrics.confusion_matrix(y_test, y_pred)

按分类计算对应的F1、precision、recall:

classification_report = metrics.classification_report(y_test, y_pred)

独立计算recall、accuracy的均值:

很多笔记里都写的需要在计算accuracy时设置属性average,但是在实际操作时会提示accuracy_score got an unexpected argument “average”,所以就把它去掉了,也能正常计算。查看源码会发现有的计算有average属性,有的没有。

recall = metrics.recall_score(y_test, y_pred, average="weighted")
accuracy = metrics.accuracy_score(y_test, y_pred)

你可能感兴趣的:(python,机器学习,python,机器学习)