1. 混淆矩阵
例:
上图中10行10列的数据,我们可以看出对角线的数据都格外的大,但是除了对角线的数据外也有一些例外的数据,它们也偏大一些,比如第7行第9列的236,第9行7列的223,5行7列的193,7行5列的231等等,我们也可以看出这些数的规律:把7和9弄错了,7和5弄错了的情况下就变成7行7列或9行9列,7行7列或5行5列,这就变成了对角线上的数,所以它们才会大。
所以,混淆矩阵就是弄错了,本来是什么,结果弄错成什么了
2. 准确率和召回率
上图中:
TP:本来是正例,你也判成了正例
FP:本来是正例,你却判成了负例
TN:本来是负例,你判成了负例
FN:本来是负例,你判成了正例
所以准确率就是:你判对的正例 / 所有的正例
召回率:你判对的正例 / 你认为的所有正例(被你判断成正例的,不管判对判错)
ROC曲线 & AUC面积
以医生诊断病情来举例:
TPR就是你有病医生也诊断出来你有病的率;FPR就是你没病,医生却诊断出来你有病的率,所以越接近左上角医生的诊断技术越高。
曲线下面的面积越大越好,说明它的TPR越高
from sklearn.datasets import fetch_mldata
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.base import clone
from sklearn.model_selection import cross_val_score # cross_val 交叉验证
from sklearn.base import BaseEstimator
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import confusion_matrix # metrics:评估,confusion_matrix:混淆矩阵
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import precision_recall_curve # 准确率与召回率
from sklearn.metrics import roc_curve # roc曲线
from sklearn.metrics import roc_auc_score # roc下的auc面积
from sklearn.ensemble import RandomForestClassifier # 随机森林分类,ensemble:集成
mnist = fetch_mldata('MNIST original', data_home='test_data_home')
# print(mnist)
X, y = mnist['data'], mnist['target']
# print(X.shape, y.shape) # X有多少行就代表有多少张图片,X的列代表每一个图片的像素,784(28*28)像素,二维的说明是黑白图片,如果彩色图片则是三维的,rgb
some_digit = X[36000]