本文将陆续汇总机器学习中常见的评价指标
分类
以下包括精度、召回率、F1、ROC曲线、PR曲线
# 精度
from sklearn.metrics import accuracy_score
# 精度,召回率,F1等
from sklearn.metrics import classification_report
# 混淆矩阵
from sklearn.metrics import confusion_matrix # 以上调用方式均为func(y_test,y_pred)
# roc曲线:面积为auc(样本不平衡时)
含义:模型把正类预测为正的概率要远大于把负类预测为正的概率,即曲线要在y=x上方
以fpr(伪阳率)为横坐标,tpr(真阳率)为纵坐标,得到roc曲线
fpr=fp/(fp+tn) # 负类中有多少被预测为正类
tpr=tp/(tp+fn) # 即召回率
from sklearn.metrics import roc_curve,auc
# 也可用概率预测函数
score_y=clf.decision_function(test_x) # 决策函数,得到距离超平面的距离信息
fpr, tpr, thresholds = roc_curve(test_y, score_y)# 得到fpr和tpr列表,可以作图
auc(fpr,tpr)# 曲线下面积
# PR曲线:即精确率-召回率曲线,ROC曲线对类别平衡更有鲁棒性(也是其缺点),类别不平衡问题中由于主要关心正例,所以在此情况下PR曲线被广泛认为优于ROC曲线。
# 如果在类别分布不相同的情况下,要比较分类器性能,可以用ROC。
from sklearn.metrics import precision_recall_curve
precision_recall_curve(test_y, score_y)# score_y同上
回归
常用MAE、MSE、r2、MAPE等
# 平均绝对误差
from sklearn.metrics import mean_absolute_error
# 均方误差
from sklearn.metrics import mean_squared_error
# r2:
from sklearn.metrics import r2_score
聚类
这块不太了解,调用如下
#
from sklearn.metrics import adjusted_rand_score
from sklearn.metrics import homogeneity_score
from sklearn.metrics import v_measure_score
交叉验证
交叉验证减少了随机性,相当于提高泛化能力吧
from sklearn.cross_validation import cross_val_score
print(cross_val_score(model, X_train, y_train, cv=4))
网友评论