机器学习--算法评价指标

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)

猜你喜欢

转载自www.cnblogs.com/dahongbao/p/11076115.html