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