# 偏差与方差
偏差:模型预测值和真实值之间的差距
方差:给定数据点的模型预测的可变性
偏差/方差权衡:模型越简单,偏差越高;模型越复杂,方差越高
# 二分类评估指标
# 1、混淆矩阵
'''
正类即目标类,真即预测正确
预测为反类 预测为正类
反类 真反例TN 假正例FP
正类 假反例FN 真正例TP
1.1 精度[模型总体性能]:(TP+TN)/(TP+TN+FP+FN)
1.2 准确率(查准率):被预测为正例的样本中有多少是真正的正例 TP/(TP+FP)
1.3 召回率(查全率):正类样本中多少是正类 TP/(TP+FN),也叫真正例率[真正样本的覆盖率]
1.4 f1-分数:准确率和召回率的调和平均:precision*recall/(precision+recall)
'''
from sklearn.metrics import classification_report
print(classification_report(y_test,pred_most_frequent,tsrget_names=['not nine','nine']))
# 输出,support表示在这个类别中真实样本的数量
# avg/total表示加权平均,按每个类别中的样本个数加权
'''
precision recall f1-score support
not nine 0.90 1.00 0.94 403
nine 0.00 0.00 0.00 47
avg / total 0.80 0.90 0.85 450
'''
# 2、受试者工作曲线(ROC曲线)
## 横坐标是假正例率FPR=FP/(FP+TN),纵坐标是真正例率TPR=TP/(TP+FN)
### 2.1 曲线下面积AUC(不平衡数据上评估模型应使用AUC)
from sklearn.metrics import roc_auc_score
rf_auc = roc_auc_score(y_test,rf.predict_proba(X_test)[:,1]) # 0.937
# decision_function代表的是参数实例到各个类所代表的超平面的距离
svc_auc = roc_auc_score(y_test,svc.decision_function(X_test)) # 0.916
# 多分类评估指标
print(classification_report(y_test,pred))
# 回归的指标:均方和