- # 二分类
- y_pred=[0,1,0,1,1,0,1]
- y_true=[0,1,0,1,0,1,0]
- me.precision_score(y_true,y_pred)# 求精度, 查准率
- me.recall_score(y_true,y_pred)# 求召回率, 查全率
ROC 曲线, AUC
- TPR = TP/(TP+FN),FPR=FP/(TN+FP).
- # 准确率: tpr=tp/(tp+fn) 所有正样本预测为正的, 误判率: fpr=fp/(tn+fp), 所有负样本中预测为正的
- fpr,tpr,thresholds=me.roc_curve(y_true,y_scores)
- plt.plot(fpr,tpr,"-o")
- plt.plot(fpr,fpr,"-o")
- #auc 为 roc 曲线下方的面积, roc 总在 y=x 上, 故 auc 的值在 0.5-1 之间
- #auc 面积越大, roc 曲线越往上越好
- me.auc(fpr,tpr)# 计算 AUC
多分类情况, 常用指标为宏平均和微平均, 混淆矩阵
- y_true=[0,0,1,1,2,2,2]
- y_pred=[0,1,1,1,2,0,2]
- # 微平均
- me.precision_score(y_true,y_pred,average='micro')# 不管类别, 只看预测是否正确
- #宏平均: 分别对各个类别计算精准度, 然后区各类别的均值,
- #适用于类别比较均衡的情况
- me.precision_score(y_true,y_pred,average='macro')
- me.precision_score(y_true,y_pred,average='weighted')# 按各类别的数量做了加权, 类别数量不均衡时使用
- me.recall_score(y_true,y_pred,average='macro')# 其他函数也可类似使用来适配多分类
- me.fbeta_score(y_true,y_pred,beta=1,average='macro')
混淆矩阵
- # 混淆矩阵
- me.confusion_matrix(y_true,y_pred)
- [[1 1 0]
- [0 2 0]
- [1 0 2]]
- print(me.classification_report(y_true, y_pred))
- #support 为分类中样本数量
- precision recall f1-score support
- 0 0.50 0.50 0.50 2
- 1 0.67 1.00 0.80 2
- 2 1.00 0.67 0.80 3
- micro avg 0.71 0.71 0.71 7
- macro avg 0.72 0.72 0.70 7
- weighted avg 0.76 0.71 0.71 7
雅克比相似性及损失函数
- # 雅克比相似性: 两集合的交集除两集合的并集
- me.jaccard_similarity_score(y_true,y_pred)
- #损失函数 Loss Function: 预测值和真实值不一致程度, 越小越好
- #汉明损失 hamming_loss
- me.hamming_loss(y_true,y_pred)
2, 回归指标
- y_true=[0.3, 2.4, 5.7, 9.0]
- y_pred=[0.5, 2.0, 4.2, 10.0]
- # 解释方差分: 衡量模型对数据集波动的解释程度
- me.explained_variance_score(y_true,y_pred)
- y1_true=[[0.5,1],[-1,1],[7,-6]]
- y1_pred=[[0,2],[-1,2],[8,-5]]
- #多维度时输出各自的方差, raw_values 参数设置的作用, 不设置时输出两维度方差的平均
- me.explained_variance_score(y1_true,y1_true,multioutput='raw_values')
- #平均绝对误差
- me.mean_absolute_error(y_true,y_pred)
- #均方误差: 最小二乘法
- me.mean_squared_error(y_true,y_pred)
- #对数均方误差
- me.mean_squared_log_error(y_true,y_pred)
- #中位数绝对误差
- me.median_absolute_error(y_true,y_pred)
- #R 方, 可决系数, 决定系数: 相关系数的平方, 衡量各变量对因变量的解释程度
- me.r2_score(y_true,y_pred)
3, 聚类指标
- # 聚类指标
- labels_true=[0,0,0,1,1,1]
- labels_pred=[0,0,1,1,2,2]
- #有目标向量的聚类: 调整兰德指数 ARI, 取值 [-1,1], 值越大蕨类结果与真实情况越吻合
- me.adjusted_rand_score(labels_true,labels_pred)# 实质两个数据分布的吻合程度
- #无目标向量时: 轮廓系数 (b-a)/max(a,b)
- #a 为同类样本的平均距离, b 为与其他不同类样本的平均距离
- from sklearn import datasets
- from sklearn.cluster import KMeans
- dataset=datasets.load_iris()
- X=dataset.data
- km=KMeans(n_clusters=3,random_state=1).fit(X)
- labels=km.labels_
- me.silhouette_score(X,labels,metric='euclidean')
- #无目标向量时: calinski_Harabaz Index, 基于类别间的协方差矩阵
- me.calinski_harabaz_score(X,labels)
好啦, 吃饭去啦! fighting!
针对机器学习分类, 聚类, 回归等进行模型的评价, 这是今天上午的学习笔记.
1 分类
分为二分类和多分类问题的指标评价, 首先介绍几个基本概念. TP: 正样本被判定为正样本, FP: 负样本被判定为正样本, FN: 正样本被判定为负样本, TN: 负样本被判定为负样本. 查准率 / 精度 = tp/(tp+fp), 查全率 / 召回率 = tp/(tp+fn)
来源: http://www.bubuko.com/infodetail-3102211.html