1. TP、FP、TN、FN划分与相关计算
y_predict = pd.Series(y_predict)
fp_filter = (y_predict == 1) & (y_true == 0)
fp = len(y_predict[fp_filter])
tp_filter = (y_predict == 1) & (y_true == 1)
tp = len(y_predict[tp_filter])
fn_filter = (y_predict == 0) & (y_true == 1)
fn = len(y_predict[fn_filter])
tn_filter = (y_predict == 0) & (y_true == 0)
tn = len(y_predict[tn_filter])
tpr = tp / float((tp + fn))
fpr = fp / float((fp + tn))
2. 查准率、查全率、F1
from sklearn.metrics import precision_score, recall_score, f1_score
print("precision score: ", precision_score(y_test, y_predict))
print("recall score: ", recall_score(y_test, y_predict))
print("f1 score: ", f1_score(y_test, y_predict))
3. ROC/AUC图像
from sklearn.metrics import roc_auc_score
print("roc/auc score: ", roc_auc_score(y_test, y_predict))
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(y_test, y_predict)
def plot_roc_curve(fpr, tpr, label=None):
plt.plot(fpr, tpr, linewidth=2, label=label)
plt.plot([0, 1], [0, 1], 'k--')
plt.axis([0, 1, 0, 1])
plt.xlabel('False Positive Rate', fontsize=16)
plt.ylabel('True Positive Rate', fontsize=16)
plt.figure(figsize=(8, 6))
plot_roc_curve(fpr, tpr)
plt.show()