分类评价指标

不均衡数据

很多时候,不同类别的分类代价并不相等,这就是非均衡分类问题。如果在两个类别中,一个类别的出现次数比另一个多很多,那么错误类型将发挥重要作用。例如。我们一共有100个病人,其中99人是健康的(阴性、反类),1人是患癌症的(阳性、正类),那么这种数据集就是不平衡数据集(imbalanced dataset)或者具有不平衡类别的数据集(dataset with imbalanced classes)。在实际当中,不平衡数据才是常态。在这个数据集中,我们即使预测得到99%的分类精度,也不代表我们模型的泛化性能就好。有一种可能·就是,我们把99个健康的预测正确了,而1个患病的没有预测正确。

混淆矩阵

分类评价指标_第1张图片 

真正例(TP):true positive,将正类中正确分类的样本。

真反例(TN):true negative,将反类中正确分类的样本。

假正例(FP):false positive,反类预测为正类的样本。

假反例(FN):false negative,正类预测为反类的样本。

Accuracy

模型的精度,即模型预测正确的个数/样本的总个数

准确率 

正确率,阳性预测值,在模型预测为正类的样本中,真正的正样本所占的比例

 

召回率

度量的是正类样本中有多少被预测为正类

Recall越高,说明有更多的正类样本被模型预测正确,模型的效果越好。

f-分数

将准确率和召回率进行汇总的一种方法是f-分数(f-score)f-度量(f-measure),它是准确率与召回率的调和平均

分类评价指标_第2张图片

 由于同时考虑了准确率和召回率,所以它对于不平衡的二分类数据集来说是一种比精度更好的度量。

ROC曲线

分类评价指标_第3张图片

TPR是学习器分类正确的正实例占所有样本正实例的比例

 

FPR是指学习器分类正确占所有样本反例的比例

 ROC曲线x轴是TPR,表示的是正确率,y轴是FPR,表示的是假阳。

from sklearn.svm import SVC
from sklearn.metrics import roc_curve
from sklearn.datasets import make_blobs
from sklearn. model_selection import train_test_split
import matplotlib.pyplot as plt

# make_blobs函数,生成一个二分类的数据不平衡数据集
X, y = make_blobs(n_samples=(4000, 500), cluster_std=[7, 2], random_state=0)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

clf = SVC(gamma=0.05).fit(X_train, y_train)

fpr, tpr, thresholds = roc_curve(y_test, clf.decision_function(X_test))

plt.plot(fpr, tpr, label='ROC')

plt.xlabel('FPR')
plt.ylabel('TPR')
plt.show()

分类评价指标_第4张图片

from sklearn.svm import SVC
from sklearn.metrics import roc_curve,roc_auc_score
from sklearn.datasets import make_blobs
from sklearn. model_selection import train_test_split
import matplotlib.pyplot as plt

# make_blobs函数,生成一个二分类的数据不平衡数据集
X, y = make_blobs(n_samples=(4000, 500), cluster_std=[7, 2], random_state=0)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

clf = SVC(gamma=0.05).fit(X_train, y_train)

# auc = roc_auc_score(y_test,clf.predict_proba(X_test)[:,1])
auc = roc_auc_score(y_test,clf.decision_function(X_test))
fpr,tpr, thresholds = roc_curve(y_test,clf.decision_function(X_test))
plt.plot(fpr,tpr,color='darkorange',label='ROC curve (area = %0.2f)' % auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.savefig('suhan.jpg',dpi=800)
plt.show()

 分类评价指标_第5张图片

 

参考文献:

5分钟带你学懂ROC曲线_最强理发师托尼的博客-CSDN博客_roc曲线

你可能感兴趣的:(机器学习,分类,数据挖掘,人工智能)