器→工具, 工具软件, 数据, 术→技巧

Scikit-Learn的模型评估指标

钱魏Way · · 0 次浏览

在scikit-learn中,要对一个拟合好的模型进行评估,有三种方法:

  • 使用各种estimator自带的score方法。一般来说,分类器的默认评估指标是正确率(accuracy),回归器的是拟合优度(R方)。
  • 使用模型评估工具(例如model_selection.cross_val_score)的scoring参数设置各种评估指标来交叉验证。
  • 使用metrics中的各种函数进行验证。

sklearn.metrics模块提供了非常多的评估函数,这些函数可以接收真实结果和预测结果并直接输出得分,另一种方法是使用sklearn.metrics.make_scorer打包供scoring参数调用。

Estimator score method

Estimator score方法: estimator具有一个score方法,为它们所设计的问题提供默认的评估标准。这不在本页面中讨论,可以在每个estimator的文档中看到详细说明。

Scoring parameter

在使用交叉验证是需要设定scoring参数,先来看看具体有哪些可选项:

分类指标

关于分类指标,先前整理过一篇文章:分类算法评估指标,但是这里有必要对下面的参数进行进一步的解释。

Scoring Function Comment
‘accuracy’ metrics.accuracy_score 准确率
‘balanced_accuracy’ metrics.balanced_accuracy_score 平衡准确率
‘top_k_accuracy’ metrics.top_k_accuracy_score Top_K准确率
‘average_precision’ metrics.average_precision_score 平均精确率
‘neg_brier_score’ metrics.brier_score_loss
‘f1’ metrics.f1_score
‘f1_micro’ metrics.f1_score micro-averaged
‘f1_macro’ metrics.f1_score macro-averaged
‘f1_weighted’ metrics.f1_score weighted average
‘f1_samples’ metrics.f1_score by multilabel sample
‘neg_log_loss’ metrics.log_loss requires predict_proba support
‘precision’ etc. metrics.precision_score 精确率
‘recall’ etc. metrics.recall_score 召回率
‘jaccard’ etc. metrics.jaccard_score suffixes apply as with ‘f1’
‘roc_auc’ metrics.roc_auc_score
‘roc_auc_ovr’ metrics.roc_auc_score
‘roc_auc_ovo’ metrics.roc_auc_score
‘roc_auc_ovr_weighted’ metrics.roc_auc_score
‘roc_auc_ovo_weighted’ metrics.roc_auc_score

准确率、精确率与召回率

  • 准确率(Accuracy):即正确分类的样本数占总样本数的比例,用于衡量模型的整体性能。公式为:(TP + TN) / (TP + TN + FP + FN),其中TP表示真正类数量,TN表示真负类数量,FP表示假正类数量,FN表示假负类数量。
  • 精确率(Precision):即在所有被分类为正类别的样本中,实际为正类别的样本数所占比例,用于衡量模型在预测为正类别时的准确性。公式为:TP / (TP + FP)。
  • 召回率(Recall):即在所有实际为正类别的样本中,被正确分类为正类别的样本数所占比例,用于衡量模型在应该预测为正类别时的覆盖率。公式为:TP / (TP + FN)。

其中,TP、TN、FP和FN分别代表模型对应的四种分类结果:

  • TP(True Positive):真正类别,模型将其预测为正类别。
  • TN(True Negative):真负类别,模型将其预测为负类别。
  • FP(False Positive):假正类别,模型将负类别预测为正类别。
  • FN(False Negative):假负类别,模型将正类别预测为负类别。

accuracy、balanced_accuracy和top_k_accuracy

  • 准确率(Accuracy):即正确分类的样本数占总样本数的比例,用于衡量模型的整体性能。对于多类别分类问题,准确率会受到类别不平衡的影响,因此在不平衡数据集中,准确率往往不能全面反映模型的性能。
  • 平衡准确率(Balanced Accuracy):为了解决类别不平衡的问题,引入了平衡准确率这一指标。平衡准确率计算每个类别的真正类别率(True Positive Rate)的平均值,即所有类别的真正类别率之和除以类别数。平衡准确率比准确率更适合处理类别不平衡问题。
  • top_k准确率(Top-k Accuracy):在k个预测类别中,只要真实类别出现在其中就被视为正确分类。例如,当k=1时,top_k准确率等价于准确率;当k=类别数时,top_k准确率相当于随机猜测一个类别的准确率。top_k准确率可以衡量模型对前k个最可能的类别的识别能力。

Precision和average_precision

当数据集中存在类别不平衡的情况时,精确率可能会失去其实际意义,此时需要引入平均精确率(average_precision)这一指标。具体来说,精确率计算模型预测为正类别的样本中,实际为正类别的样本数量占比。而平均精确率则是对每个类别分别计算精确率并求平均值。

两者的区别主要在于计算方式和应用场景上。精确率只考虑了正类别的分类情况,适合于二元分类或类别平衡的多类别分类问题。而平均精确率不仅考虑了正类别的分类情况,还能反映类别不平衡问题的影响,适合于处理类别不平衡问题的多类别分类问题。

需要注意的是,在计算平均精确率时,对于每个类别的贡献是通过对该类别下所有召回率(recall)与精确率之间的插值求得的。因此,平均精确率也被称为面积平均精确率(Area Under the Precision-Recall Curve,AUPRC),它可以通过绘制精确率-召回率曲线(PR曲线)得到,并计算曲线下的面积。

f1、f1_micro、f1_macro、f1_weighted和f1_samples

在多类别分类问题中,f1-score常用于评价模型的性能。f1-score综合了精确率(precision)和召回率(recall)两个指标,可以有效地反映模型的分类能力。Scikit-learn中提供了多种计算f1-score的方式,包括f1、f1_micro、f1_macro、f1_weighted和f1_samples等指标,它们之间的区别如下:

  • f1-score(f1):对于每个类别,分别计算精确率和召回率,然后计算调和平均数得到f1-score,最后对所有类别的f1-score求平均值。
  • micro-f1-score(f1_micro):将所有样本的预测结果合并为一个混淆矩阵,然后计算总体精确率和召回率,最后计算f1-score。由于该方法只考虑了总体的分类情况,因此适用于处理类别不平衡问题。
  • macro-f1-score(f1_macro):对所有类别计算f1-score,并对所有类别的f1-score求平均值。由于该方法对所有类别平等看待,因此适用于类别平衡的多类别分类问题。
  • weighted-f1-score(f1_weighted):对所有类别计算f1-score,并加权求平均值,权重为每个类别在数据集中出现的相对频率。由于该方法对类别不平衡进行了考虑,因此适用于处理类别不平衡的多类别分类问题。
  • samples-f1-score(f1_samples):对每个样本分别计算f1-score,然后对所有样本的f1-score求平均值。由于该方法考虑了每个样本的分类情况,因此适用于样本数量较少的多类别分类问题。

roc_auc、roc_auc_ovr、roc_auc_ovo、roc_auc_ovr_weighted和roc_auc_ovo_weighted

在二元分类问题中,ROC曲线和AUC值常用于评价模型的性能。Scikit-learn中提供了多种计算ROC曲线和AUC值的方法,包括roc_auc、roc_auc_ovr、roc_auc_ovo、roc_auc_ovr_weighted和roc_auc_ovo_weighted等指标,它们之间的区别如下:

  • ROC-AUC(roc_auc):对于二元分类问题,计算ROC曲线下的面积(AUC),用于评估模型对正类别和负类别的分类效果。
  • One-vs-Rest ROC-AUC(roc_auc_ovr):针对多类别问题,将所有类别分为一个正类别和其他类别的负类别,分别计算ROC曲线下的面积,并求平均值得到ROC-AUC值。该方法适用于类别不平衡或者每个样本只属于一个类别的多类别分类问题。
  • One-vs-One ROC-AUC(roc_auc_ovo):针对多类别问题,将所有类别两两组合,构造出n(n-1)/2个二元分类问题,然后计算每个二元分类问题的ROC曲线下的面积,并求平均值得到ROC-AUC值。该方法适用于类别数量较少的多类别分类问题。
  • Weighted One-vs-Rest ROC-AUC(roc_auc_ovr_weighted):与roc_auc_ovr相似,但是在计算每个类别的ROC曲线下的面积时,加权考虑了每个类别在数据集中出现的相对频率。该方法适用于处理类别不平衡的多类别分类问题。
  • Weighted One-vs-One ROC-AUC(roc_auc_ovo_weighted):与roc_auc_ovo相似,但是在计算每个二元分类问题的ROC曲线下的面积时,加权考虑了每个类别在数据集中出现的相对频率。该方法适用于处理类别不平衡且类别数量较少的多类别分类问题。

neg_brier_score、neg_log_loss和jaccard

  • neg_brier_score:Brier得分是一种常见的评估二元分类器预测效果的得分。Brier得分是通过计算实际分类结果与预测概率之间的误差平方来获得的。如此一来,它不仅考虑了模型的分类准确性,也考虑了距离真实值有多远的问题。Brier得分越低,模型的表现就越好。因此,Scikit-learn中的neg_brier_score用于计算负的Brier得分。
  • neg_log_loss:对数损失函数是常见的衡量分类器输出概率质量函数的有效度量。Scikit-learn中的neg_log_loss用于计算负的对数损失。
  • Jaccard相似系数:Jaccard相似系数是一种度量两个样本集合交集大小与并集大小的比例的指标。 在分类问题中,Jaccard相似系数通常被用作模型预测与实际类别之间的相似性度量。Jaccard相似系数越高,意味着预测越接近真实类别。

需要注意的是,Scikit-learn中的neg_brier_score和neg_log_loss都是负指标,即数值越小代表模型性能越好。而Jaccard相似系数则是一个介于0和1之间的值,数值越大代表模型性能越好。

聚类指标

先前也整理过一篇聚类算法评估指标,今天就来看下还有哪些需要再补充的。

Scoring Function Comment
‘adjusted_mutual_info_score’ metrics.adjusted_mutual_info_score
‘adjusted_rand_score’ metrics.adjusted_rand_score
‘completeness_score’ metrics.completeness_score
‘fowlkes_mallows_score’ metrics.fowlkes_mallows_score
‘homogeneity_score’ metrics.homogeneity_score
‘mutual_info_score’ metrics.mutual_info_score
‘normalized_mutual_info_score’ metrics.normalized_mutual_info_score
‘rand_score’ metrics.rand_score
‘v_measure_score’ metrics.v_measure_score

mutual_info_score、adjusted_mutual_info_score与normalized_mutual_info_score

在聚类问题中,互信息(Mutual Information)和归一化互信息(Normalized Mutual Information)是常用的评估指标。Scikit-learn中提供了三个计算互信息的指标:互信息得分(Mutual Information Score)、调整后的互信息得分(Adjusted Mutual Information Score,AMI)和标准化的互信息得分(Normalized Mutual Information Score,NMI)。这三个指标之间的区别如下:

  • 互信息得分(Mutual Information Score):互信息是两个离散随机变量之间的相互依赖性度量。互信息得分衡量了聚类结果与真实标签之间的相似度,值越高表示聚类结果越接近真实标签。
  • 调整后的互信息得分(Adjusted Mutual Information Score,AMI):AMI通过考虑随机元素对互信息进行校正,以及将互信息分数标准化为介于0和1之间的值来解决互信息得分的缺陷。AMI得分越高,表示聚类结果与真实标签之间的相似度越高。
  • 标准化的互信息得分(Normalized Mutual Information Score,NMI):NMI通过将互信息除以簇和标签熵的平均值来标准化,以便比较不同类别数、不同数据集大小和不同簇数的聚类算法性能。NMI得分越高,表示聚类结果与真实标签之间的相似度越高。

综上所述,这三个指标都可以用于评估聚类模型的性能,但是它们的计算方式略有不同。互信息得分适用于简单的聚类问题,而AMI和NMI更适用于复杂的聚类问题,并且加入了修正因素,能够更好地反映聚类结果和真实标签之间的关系。

rand_score与adjusted_rand_score

在聚类问题中,Rand Index和Adjusted Rand Index是用于评估聚类结果与真实标签之间的相似度的指标。其中,Rand Index(RI)是一种简单的度量方法,而调整后的Rand Index(ARI)对RI进行了校正,以解决RI在不同数据集和簇数下的偏差问题。

具体来说,RI将样本分成所有可能的组合,并考虑每个组合中两个样本分类是否相同。RI的值介于0到1之间,值越高表示聚类结果越接近真实标签。而ARI考虑了随机因素对RI计算过程的干扰,引入了基于期望的调整因子,从而消除了簇数、样本数和类别数量等因素带来的影响。ARI值介于-1到1之间,值越高表示聚类结果越接近真实标签。

综上所述,RI和ARI都可以用于评估聚类模型的性能,但是ARI对RI进行了校正,能够更准确地反映聚类结果与真实标签之间的相似度。在实际应用中,我们通常使用ARI作为聚类模型性能的评估指标。

completeness_score、fowlkes_mallows_score、homogeneity_score和v_measure_score

  • completeness_score:衡量所有属于同一真实标签的样本是否都被分到了同一个簇中。计算方式为所有同一真实标签的样本在同一个簇中的比例的均值。
  • homogeneity_score:衡量每个簇是否只包含单个真实标签的样本。计算方式为每个簇内只有单一真实标签的样本数量占该簇总样本数的比例的均值。
  • v_measure_score:综合考虑homogeneity_score和completeness_score,即同时满足簇内只有单一真实标签的样本和同一真实标签的样本被分到同一个簇中这两个条件。计算方式为两者的调和平均数。
  • fowlkes_mallows_score:将聚类结果看做二元分类问题,定义P、N、TP、TN、FP、FN分别为正样本、负样本、真正类、真负类、假正类和假负类。根据这些定义,可以计算Fowlkes-Mallows指数,它是精确率和召回率的几何平均数。

需要注意的是,completeness_score、homogeneity_score和v_measure_score都在0到1之间取值,值越高表示聚类效果越好;而fowlkes_mallows_score的取值范围为0到1,值越高表示聚类效果越好。在实际应用中,我们可以根据具体情况选择不同的指标来评估聚类模型的性能。

回归指标

在学习前,可以先看下先前整理的回归模型评估指标

Scoring Function Comment
‘explained_variance’ metrics.explained_variance_score 可解释方差
‘max_error’ metrics.max_error 最大误差值
‘neg_mean_absolute_error’ metrics.mean_absolute_error
‘neg_mean_squared_error’ metrics.mean_squared_error
‘neg_root_mean_squared_error’ metrics.mean_squared_error
‘neg_mean_squared_log_error’ metrics.mean_squared_log_error
‘neg_median_absolute_error’ metrics.median_absolute_error
‘r2’ metrics.r2_score 决定系数
‘neg_mean_poisson_deviance’ metrics.mean_poisson_deviance
‘neg_mean_gamma_deviance’ metrics.mean_gamma_deviance
‘neg_mean_absolute_percentage_error’ metrics.mean_absolute_percentage_error
‘d2_absolute_error_score’ metrics.d2_absolute_error_score
‘d2_pinball_score’ metrics.d2_pinball_score
‘d2_tweedie_score’ metrics.d2_tweedie_score

neg_mean_squared_error与neg_root_mean_squared_error

  • neg_mean_squared_error:均方误差的相反数。均方误差(Mean Squared Error,MSE)是预测值与真实值之间差的平方值的平均值。因为MSE可能会受到离群点的影响,所以在某些情况下,neg_mean_squared_error不适用于对模型性能的评估。
  • neg_root_mean_squared_error:平均均方根误差的相反数。平均均方根误差(Root Mean Squared Error,RMSE)是均方根误差的平均值,即预测值与真实值之间差的平方根的平均值。与MSE相比,RMSE更加稳健,因此通常被认为是更好的指标来评估回归模型的性能。

需要注意的是,这两个指标都是负数,其数值越小表示模型性能越好。但是,由于neg_mean_squared_error没有考虑到离群点的影响,因此在评估模型时应该先考虑使用neg_root_mean_squared_error指标。

neg_mean_squared_error、neg_mean_absolute_error、neg_mean_squared_log_error与neg_median_absolute_error

  • neg_mean_squared_error:均方误差(Mean Squared Error,MSE)是预测值与真实值之间差的平方值的平均值。因为MSE对异常值比较敏感,所以在存在离群点的数据集中,MSE不一定是最好的评估指标。
  • neg_mean_absolute_error:平均绝对误差(Mean Absolute Error,MAE)是预测值与真实值之间差的绝对值的平均值。MAE相对于MSE更加稳健,因为它不受离群点的影响。因此,当数据存在离群点时,通常会优先考虑MAE作为回归模型的性能指标。
  • neg_mean_squared_log_error:均方对数误差(Mean Squared Logarithmic Error,MSLE)是预测值和真实值之间的对数误差的平方的平均值。与MSE不同,MSLE对大误差的惩罚较小,对小误差的惩罚较大。
  • neg_median_absolute_error:中位数绝对误差(Median Absolute Error,MedAE)是预测值和真实值之间差的绝对值的中位数。与MAE类似,MedAE也对离群点具有较好的鲁棒性。

neg_mean_absolute_error与neg_mean_absolute_percentage_error

  • neg_mean_absolute_error(NMAE)是所有绝对误差的平均值,它衡量了预测值与实际值之间的平均差距。
  • neg_mean_absolute_percentage_error(NMAPE)是一个常用的百分比误差指标,它度量了预测值与实际值之间的平均百分比误差。计算时需要将MAPE取相反数,因为sklearn默认情况下选择最小化损失函数。

$$NMAE = -\frac{1}{n} \sum_{i=1}^{n} | y_i – \hat{y_i} |$$

$$NMAPE = -\frac{1}{n} \sum_{i=1}^{n} | \frac{y_i – \hat{y_i}}{y_i} | \times 100\% $$

其中$y_i$是真实值,$\hat{y_i}$是预测值,$n$是样本数。NMAE、NMAPE越小,表示模型的性能越好。

这两个指标都是度量回归模型性能的指标,但是NMAE度量的是预测值与真实值之间的平均差距,而NMAPE则度量的是预测值与真实值之间的平均百分比误差。如果使用NMAE作为指标,则较大的误差会被放大,而NMAPE则会考虑到数据的整体范围,因此更加适合用于比较不同数据集的模型性能。

neg_mean_absolute_error与d2_absolute_error_score区别

  • neg_mean_absolute_error(NMAE)是所有绝对误差的平均值,它衡量了预测值与实际值之间的平均差距。
  • d2_absolute_error_score是一种基于D2统计量的误差指标,它主要用于比较不同模型在同一数据集上的性能。D2统计量是指实际值和预测值之间的欧氏距离平方除以实际值的平均值。

d2_absolute_error_score具体公式为:

$$D2 = \frac{\sum_{i=1}^{n} (y_i – \hat{y_i})^2}{n\bar{y}^2} $$

其中$y_iy$​是真实值,$\hat{y_i}$​是预测值,n是样本数,$\bar{y}$是实际值的平均值。D2统计量越小,表示模型的性能越好,因此d2_absolute_error_score的取值也越小。

这两个指标都是度量回归模型性能的指标,但是NMAE度量的是预测值与真实值之间的平均差距,而d2_absolute_error_score则考虑了预测值与真实值之间的欧氏距离平方,同时还需要使用实际值的平均值来标准化。因此,d2_absolute_error_score更加注重模型的精确性和稳定性,适合用于比较不同模型在同一数据集上的性能,而NMAE更适合用于单独评估一个模型的性能。

d2_pinball_score与d2_tweedie_score

d2_pinball_score是一种基于分位数回归的评估指标,主要用于评估在不同分位数上的预测性能。分位数回归是一种可用于预测多个分位数的回归模型,相比普通的均值预测,分位数回归可以更好地处理数据中的异常点。d2_pinball_score衡量了预测分位数与真实分位数之间的误差,公式为:

$$Pinball(q) = \frac{1}{n}\sum_{i=1}^{n} L_q(y_i, \hat{y_i})$$

$$L_q(y, \hat{y}) = \begin{cases} q(y-\hat{y}) & y \geq \hat{y} \\ (1-q)(\hat{y}-y) & y < \hat{y} \end{cases}$$

其中q为所需预测的分位数,$y_i$​是真实值,$\hat{y_i}$是预测值,$L_q$​是分位数损失函数。d2_pinball_score越小,则表示模型在分位数回归上的性能越好。

d2_tweedie_score是一种基于Tweedie分布的评估指标,主要用于使用Tweedie分布进行建模的回归问题。Tweedie分布是一种广义线性模型的特殊形式,它可以同时处理连续数据和离散数据,并且可以调整输出的方差和期望值之间的关系。d2_tweedie_score衡量了预测值与真实值之间的误差,公式为:

$$D2_T = \frac{1}{n}\sum_{i=1}^{n} w_i(\frac{y_i – \hat{y_i}}{\phi\hat{y_i}})^2$$

其中$y_i$​是真实值,$\hat{y_i}$​是预测值,$w_i$​是权重,$\phi$是Tweedie分布的一个参数。d2_tweedie_score越小,则表示模型的性能越好,即模型对Tweedie分布的拟合效果越好。

这两个指标都是度量回归模型性能的指标,但是它们适用于不同类型的回归问题,具有不同的计算方式和应用场景。d2_pinball_score适用于评估分位数回归模型的性能,而d2_tweedie_score则适用于使用Tweedie分布进行建模的回归问题。

explained_variance、max_error和r2

explained_variance表示模型对目标变量方差的解释程度,其计算公式为:

$$explained\_variance(y, \hat{y}) = 1 – \frac{Var\{y – \hat{y}\}}{Var\{y\}} $$

当模型完美地预测目标变量时,$explained\_variance$等于1,而当模型总是输出目标变量的平均值时,则$explained\_variance$等于0。

max_error衡量了模型预测的最大误差,其计算公式为:

$$max\_error(y, \hat{y}) = max(|y_i – \hat{y_i}|) $$

max_error越小,表示模型的性能越好。

r2(R平方)是一种常用的回归评估指标,表示模型解释目标变量方差的比例,其计算公式为:

$$r^2(y, \hat{y}) = 1 – \frac{\sum_{i=1}^{n}(y_i – \hat{y_i})^2}{\sum_{i=1}^{n}(y_i – \bar{y})^2} $$

$r^2$的取值范围为[0, 1],当$r^2$等于1时,表示模型完美地解释了目标变量的方差,而当$r^2$等于0时,则表示模型无法解释目标变量的方差。

Metric functions

分类指标

由于上面已经介绍了一部分分类指标,这里仅针对还未介绍的指标展开

方法 说明
metrics.accuracy_score(y_true, y_pred, *[, …])
metrics.auc(x, y)
metrics.average_precision_score(y_true, …)
metrics.balanced_accuracy_score(y_true, …)
metrics.brier_score_loss(y_true, y_prob, *)
metrics.class_likelihood_ratios(y_true, …) Compute binary classification positive and negative likelihood ratios.
metrics.classification_report(y_true, y_pred, *) Build a text report showing the main classification metrics.
metrics.cohen_kappa_score(y1, y2, *[, …]) Compute Cohen’s kappa: a statistic that measures inter-annotator agreement.
metrics.confusion_matrix(y_true, y_pred, *) Compute confusion matrix to evaluate the accuracy of a classification.
metrics.dcg_score(y_true, y_score, *[, k, …]) Compute Discounted Cumulative Gain.
metrics.det_curve(y_true, y_score[, …]) Compute error rates for different probability thresholds.
metrics.f1_score(y_true, y_pred, *[, …])
metrics.fbeta_score(y_true, y_pred, *, beta) Compute the F-beta score.
metrics.hamming_loss(y_true, y_pred, *[, …]) Compute the average Hamming loss.
metrics.hinge_loss(y_true, pred_decision, *) Average hinge loss (non-regularized).
metrics.jaccard_score(y_true, y_pred, *[, …])
metrics.log_loss(y_true, y_pred, *[, eps, …])
metrics.matthews_corrcoef(y_true, y_pred, *) Compute the Matthews correlation coefficient (MCC).
metrics.multilabel_confusion_matrix(y_true, …) Compute a confusion matrix for each class or sample.
metrics.ndcg_score(y_true, y_score, *[, k, …]) Compute Normalized Discounted Cumulative Gain.
metrics.precision_recall_curve(y_true, …) Compute precision-recall pairs for different probability thresholds.
metrics.precision_recall_fscore_support(…) Compute precision, recall, F-measure and support for each class.
metrics.precision_score(y_true, y_pred, *[, …])
metrics.recall_score(y_true, y_pred, *[, …])
metrics.roc_auc_score(y_true, y_score, *[, …])
metrics.roc_curve(y_true, y_score, *[, …]) Compute Receiver operating characteristic (ROC).
metrics.top_k_accuracy_score(y_true, y_score, *)
metrics.zero_one_loss(y_true, y_pred, *[, …]) Zero-one classification loss.

metrics.classification_report

metrics.classification_report函数是用于生成分类模型性能报告的函数。主要评估指标包括精确度(precision)、召回率(recall)、F1-score和支持度(support)。

分类报告分别计算了每个类别的上述评估指标,并给出了加权平均值以供比较。具体来说,对于一个二元分类问题,分类报告通常按以下格式输出:

               precision    recall  f1-score   support

      class 0       0.84      0.91      0.87        99
      class 1       0.74      0.60      0.67        41

    accuracy                           0.81       140
   macro avg       0.79      0.76      0.77       140
weighted avg       0.81      0.81      0.81       140

其中,precision、recall 和 f1-score 是基于真阳性、假阳性和假阴性的统计量计算得出的。通过这些指标,我们可以了解模型对于不同类别的预测效果如何。例如,在以上示例中,class 0 的精确度很高,而 class 1 的召回率较低,表明模型在预测 class 1 上效果相对较差。

另外,分类报告还包含了加权平均精度、加权平均召回率、加权平均 F1-score 和支持度。这些指标是所有类别的 metric 值的加权平均值,其中权重为各类别样本数。通过这些指标,我们可以获取到整个模型的预测效果。

metrics.class_likelihood_ratios

metrics.class_likelihood_ratios是用于二元分类模型的评估指标之一,它的主要功能是计算正类和负类的似然比。该指标适用于对概率分布进行建模的情况,可以帮助我们确定模型是否具有可靠的分类能力,并确定最佳的分类阈值。

该函数将计算正类和负类的似然比,并返回一个元组。似然比的计算基于ROC曲线。具体来说,在计算ROC曲线时,class_likelihood_ratios函数会首先对样本进行排序,并使用不同的概率阈值生成一系列真阳性、假阳性和假阴性的数量。然后,对于每个概率阈值,该函数将计算正类和负类的发生率,并使用这些比率计算出正类和负类的似然比。在实际应用中,可以使用似然比来确定最佳的分类阈值。通常,将分类概率设置为正类的似然比大于等于1的样本,而负类的似然比小于1的样本。

总之,class_likelihood_ratios指标适用于需要对分类模型进行精细调整的情况,可以帮助我们确定最佳的分类阈值,并评估模型的分类能力。

metrics.confusion_matrix 与metrics.multilabel_confusion_matrix

  • confusion_matrix用于计算二元分类的混淆矩阵。混淆矩阵是一个2×2的矩阵,显示了真实类别和预测类别之间的对应情况。具体来说,混淆矩阵中的4个条目分别表示真阳性、假阳性、假阴性和真阴性的数量。该函数接受两个参数:真实类别和预测类别,然后根据这两个列表计算混淆矩阵。
  • multilabel_confusion_matrix用于计算多标签分类的混淆矩阵。多标签分类通常涉及到多个标签的分类问题,每个样本可以属于多个标签。因此,混淆矩阵也需要相应地进行更新。与二元分类相比,多标签分类的混淆矩阵是一个3维的张量,其中第一维表示每个标签,第二维和第三维表示真实类别和预测类别。使用多标签分类的数据集调用该函数将返回一个形状为(n_classes, 2, 2)的张量,其中n_classes是分类器预测的类别数量。

metrics.cohen_kappa_score

metrics.cohen_kappa_score是一种常用的分类模型性能评估指标,它衡量了分类模型预测与实际类别之间的一致性。Cohen Kappa系数基于混淆矩阵计算得出。它将分类器的性能与随机分类器的性能进行比较,因此可以减少偶然误差的影响。

具体来说,Cohen Kappa系数是通过比较分类模型的观测值和期望值来计算的。观测值是混淆矩阵中对角线上元素的数量,表示分类器正确分类的样本数。期望值是分类器在各类别上的分类概率的加权平均值,表示随机分类器正确分类的样本数。Cohen Kappa系数的计算公式为:

$$\kappa = \frac{p_o – p_e}{1 – p_e} $$

其中$p_o$​是观测值的比例,$p_e$是期望值的比例。$\kappa$的取值范围为[-1, 1],当$\kappa$等于1时表示完全一致,而当$\kappa$等于0时表示随机分类器的性能,当$\kappa$小于0时表示分类器性能差于随机分类器。

该指标的优点是不会受到分类器输出分值的影响,只受判断的结果影响,因此可以抵消分类器预测概率的偏移或缩放问题,并且可计算多分类问题的模型性能。

metrics.roc_curve和metrics.roc_auc_score

  • roc_curve用于绘制ROC曲线。ROC曲线显示了分类器在不同阈值下真阳性率和假阳性率之间的权衡关系。该函数接受两个参数:真实标签和预测概率。真实标签指的是样本的真实标签,通常为0或1。预测概率指的是分类器对每个样本属于正类的概率估计值。它返回三个numpy数组:假阳性率、真阳性率和阈值。我们可以使用这些数组来绘制ROC曲线,并计算出ROC曲线下面积(AUC)。
  • roc_auc_score用于计算ROC曲线下的面积(AUC)。AUC表示ROC曲线下方的面积,可用作分类器性能的指标。该函数的输入参数与metrics.roc_curve相同:真实标签和预测概率。该函数返回一个单个的得分,即ROC曲线下方的面积,取值范围为[0, 1]。

metrics.hamming_loss、metrics.hinge_loss、metrics.log_loss和metrics.zero_one_loss

  • hamming_loss:测量标签预测与实际标签之间的汉明距离,即在两个标签序列中对应标签不同的数量除以所有标签的总数。此指标适用于多标签二进制分类问题。
  • hinge_loss:衡量错误分类的程度。它是基于支持向量机(SVM)的损失函数,可以用于二元和多类分类问题。
  • log_loss:也称为交叉熵损失,衡量模型预测概率分布与真实标签分布之间的差异性。该指标通常用于评估概率输出模型,如逻辑回归和softmax分类器。
  • zero_one_loss:也称为误分类率,计算被错误分类的样本数量与总样本数之间的比例。值越低,表示模型性能越好。

metrics.dcg_score和metrics.ndcg_score

  • dcg_score:Discounted Cumulative Gain(折扣累计增益)是一种度量排序结果质量的方法。DCG 考虑了推荐列表的顺序和每个项目的相关程度得分,该值越高,表示推荐结果更好。
  • ndcg_score:Normalized Discounted Cumulative Gain(归一化折扣累计增益)是 DCG 的归一化版本,将 DCG 分数除以最优排名下的 DCG 分数,并将其限制为 0 到 1 之间。这意味着 NDCG 能够比较不同长度和大小的推荐列表。

因此,DCG 和 NDCG 都是评估推荐系统排序效果的指标,它们都考虑了物品的相关性和排序位置对排序结果的影响,但 NDCG 进一步解决了不同长度和大小的推荐列表所产生的问题,并且能够通过归一化来提高可比性。

metrics.det_curve 和 metrics.roc_curve

  • det_curve:Detection Error Tradeoff(检测错误折衷)是一种可视化分类器性能的方法,将假阳性率和假阴性率绘制在同一图表上,以形成 DET 曲线。DET 曲线可以用于比较不同分类器的性能,并且对于高 false positive rate(FPR)和 low false negative rate(FNR)的应用程序更加敏感。
  • roc_curve:Receiver Operating Characteristic(接收器操作特征)曲线是一种二元分类器常用的分析工具。ROC 曲线将真正率(TPR)与假阳性率(FPR)之间的权衡表示为一条曲线。该指标通常用于比较不同分类器或模型的性能,对于高 FPR 的应用程序更加敏感。

因此,DET 曲线和 ROC 曲线都是评估分类器性能的方法,但它们强调不同的错误类型和权衡。DET 曲线关注假阴性率和假阳性率的权衡,而 ROC 曲线关注真阳性率和假阳性率的权衡。在选择指标时需要根据具体问题进行判断。

metrics.fbeta_score

metrics.fbeta_score 是一种衡量分类模型性能的指标,通常用于不平衡数据集,评估精度(precision)和召回率(recall)之间的权衡。FBeta 分数是 precision 和 recall 的加权调和平均值,其中 beta 系数控制了 precision 和 recall 之间的相对重要性。

具体而言,FBeta 分数可以表示为:

$$F_{\beta} = (1+\beta^2) \cdot \frac{\text{precision} \cdot \text{recall}}{(\beta^2 \cdot \text{precision}) + \text{recall}}$$

其中 β2\beta^2β2 决定了 precision 和 recall 的权重,当 β=1\beta = 1β=1 时,FBeta 分数等价于 F1 分数。

通过选择不同的$\beta$值,可以调整 precision 和 recall 之间的权衡。例如,当$\beta > 1$ 时,模型更注重 recall;当 $\beta < $时,模型更注重 precision。

因此,FBeta 分数是一种广泛使用的评估分类模型性能的指标,它可以适应不同数据集中 precision 和 recall 之间的折衷,并且可以根据实际问题调整 beta 系数以改变分数细节。

metrics.matthews_corrcoef

metrics.matthews_corrcoef 是一种用于衡量二元分类模型性能的指标,它可以在数据集不平衡的情况下提供更准确的度量。MCC(Matthews Correlation Coefficient)是通过计算真阳性、真阴性、假阳性和假阴性之间的相关系数来评估分类器的性能。

具体而言,MCC 可以表示为:

$$MCC = \frac{TP \times TN – FP \times FN}{\sqrt{(TP+FP)\times(TP+FN)\times(TN+FP)\times(TN+FN)}}$$

其中,TP 表示真正例(True Positives),TN 表示真反例(True Negatives),FP 表示假正例(False Positives),FN 表示假反例(False Negatives)。MCC 的取值范围为 -1 到 1,其中 1 表示完美预测,0 表示随机预测,-1 表示完全错误的预测。

因此,MCC 是一种很好的衡量二元分类器预测能力的指标,它在数据集类别分布不平衡的情况下也能够提供更加准确的评价。MCC 越接近 1,表示分类器的性能越好;MCC 越接近 -1,表示分类器性能越糟糕;MCC 接近 0,表示分类器的预测结果与随机预测结果相当。

metrics.precision_recall_curve 与metrics.precision_recall_fscore_support

metrics.precision_recall_curve 和 metrics.precision_recall_fscore_support 都是用于评估二元分类模型性能的指标,具体区别如下:

  • precision_recall_curve:这是一个计算在不同阈值下的精度和召回率的函数。该指标基于 precision-recall 曲线,通常用于选择最适合应用程序的模型或比较不同模型的性能。precision-recall 曲线表示 precision 和 recall 之间的权衡,可以更准确地评估不平衡的数据集。
  • precision_recall_fscore_support:这是一个计算精度、召回率和 F1 分数的函数。F1 分数是 precision 和 recall 的调和平均值,是精度(precision)和召回率(recall)之间的综合指标。该指标还返回每个类别(0 或 1)的支持次数,即测试集中真实类别为 0 或 1 的样本数量。

因此,两者的主要区别在于输出结果不同。 metrics.precision_recall_curve 输出不同阈值下的精度和召回率,而 metrics.precision_recall_fscore_support 输出每个类别的精度、召回率和 F1 分数,以及测试集中每个类别的支持次数。

回归指标

方法 说明
metrics.explained_variance_score(y_true, …)
metrics.max_error(y_true, y_pred)
metrics.mean_absolute_error(y_true, y_pred, *)
metrics.mean_squared_error(y_true, y_pred, *)
metrics.mean_squared_log_error(y_true, y_pred, *)
metrics.median_absolute_error(y_true, y_pred, *)
metrics.mean_absolute_percentage_error(…)
metrics.r2_score(y_true, y_pred, *[, …])
metrics.mean_poisson_deviance(y_true, y_pred, *)
metrics.mean_gamma_deviance(y_true, y_pred, *)
metrics.mean_tweedie_deviance(y_true, y_pred, *) Mean Tweedie deviance regression loss.
metrics.d2_tweedie_score(y_true, y_pred, *)
metrics.mean_pinball_loss(y_true, y_pred, *) Pinball loss for quantile regression.
metrics.d2_pinball_score(y_true, y_pred, *)
metrics.d2_absolute_error_score(y_true, …)

metrics.mean_tweedie_deviance

metrics.mean_tweedie_deviance 是一种用于评估回归模型性能的指标,特别地,它是 Tweedie 分布下平均失真度量。Tweedie 分布通常用于处理偏斜或非对称数据,例如保险索赔或财务数据。

具体而言,Tweedie 分布由以下公式定义:

$$Y \sim \phi^{-1}(\mu) \cdot \exp\left\{\frac{1}{p}[(Y\cdot\theta – b(\theta)) \cdot (\mu^{1-p})]\right\}$$

其中Y是观测值向量,$\mu$ 是期望值向量,$\theta$是 Tweedie 分布中的位置参数,$b(\theta)$是一个关于 $\theta$的函数,$p$是 Tweedie 分布的幂参数并且满足 $1 \leq p < 2$ 或者$p \geq 2$。

然后,Tweedie 损失函数可以表示为:

$$\text{TweedieDev}(y, \hat{y}) = \frac{1}{n}\sum_{i=1}^n w_i\cdot (\hat{y}_i^{1-p}\cdot y_i – \hat{y}_i^{1-p}/(1-p))$$

其中 $y_i$是观测值,$\hat{y}_i¥是模型的预测值,$w_i$是样本权重。

因此,metrics.mean_tweedie_deviance 衡量了模型预测值与真实值之间的平均误差,适用于 Tweedie 分布下的回归问题,并且支持加权。当分布存在偏斜或非对称时,该指标更可靠并且更能够反映不同数据分布的差异。

metrics.mean_pinball_loss

metrics.mean_pinball_loss 是一种用于评估分位数回归模型性能的指标。分位数回归模型是一种回归方法,可以在不同的置信区间内预测观测值,并计算模型预测与真实值之间的误差。

具体而言,对于每个分位数 $tau$,metrics.mean_pinball_loss 可以表示为:

$$\text{PinballLoss}_{\tau}(y, \hat{y}) = \frac{1}{n}\sum_{i=1}^n(\hat{y}_i – y_i)\cdot(q – [q < 0])$$

其中 y是观测值向量,$\hat{y}$是模型的预测值向量, q 是 $\tau$分位数。该指标是预测误差的加权平均值,其中每个误差项都乘以一个 PINBALL 权重因子。

此外,如果要计算所有分位数的平均损失,则可以将每个分位数的 metrics.mean_pinball_loss 相加并除以总分位数数量。

因此,在分位数回归模型中使用 metrics.mean_pinball_loss 衡量模型预测值和真实值之间的误差,可以更好地理解数据分布和置信度,并且可以比较不同的模型或参数。

多标签排序指标Multilabel ranking metrics

方法 说明
metrics.coverage_error(y_true, y_score, *[, …]) Coverage error measure.
metrics.label_ranking_average_precision_score(…) Compute ranking-based average precision.
metrics.label_ranking_loss(y_true, y_score, *) Compute Ranking loss measure.

metrics.coverage_error

metrics.coverage_error 是用于评估多标签分类器性能的指标之一,它衡量模型的预测与真实标签之间的差异。该指标可以帮助了解模型在给出正确答案时需要考虑多少个标签。

具体而言,metrics.coverage_error 可以表示为:

$$\text{CoverageError}(y, \hat{y}) = \frac{1}{n}\sum_{i=1}^n\max_{j:y_{ij}=1}\sum_{k:\hat{y}_{ik}=0}^K\hat{y}_{ijk}$$

其中 y 是真实标签向量(二进制),$\hat{y}$是预测标签向量(概率或二进制),n 是样本数量,K是标签数量。该指标是对每个样本和其真实标签集合中未被预测的标签数进行计数,并将其平均。

因此,较小的 metrics.coverage_error 值表示模型需要更少的标签即可正确预测结果,因此性能更好。该指标适用于多标签分类问题,并且可以帮助识别模型的弱点和改进方向。

metrics.label_ranking_average_precision_score

metrics.label_ranking_average_precision_score 是一种用于评估多标签分类模型性能的指标,它衡量模型对多个标签的排序能力。该指标通过计算每个样本的平均精度值(average precision,AP)来评估模型在对一组标签进行排序时的效果。

具体而言,对于每个样本,metrics.label_ranking_average_precision_score 可以表示为:

$$AP(y_i, \hat{y}_i) = \frac{1}{\sum_{j=1}^Ky_{ij}}\sum_{k=1}^K y_{ik} \cdot \text{precision}(k)$$

其中$y_i$是真实标签向量(二进制),$\hat{y}_i$是预测标签向量(概率或二进制),K是标签数量,$\text{precision}(k)$表示预测结果中前k个标签与真实结果相同的比例。然后,对于所有样本的 AP 值求平均,得到 metrics.label_ranking_average_precision_score。

因此,metrics.label_ranking_average_precision_score 衡量了模型对多个标签进行排序的能力,在多标签分类问题中是一种常用的性能评估指标。较高的平均精度值表示模型的排序性能更好。

metrics.label_ranking_loss

metrics.label_ranking_loss 是一种用于评估多标签分类模型性能的指标,它衡量了模型对多个标签进行排序时的失效程度。该指标测量模型中对真实标签和预测标签之间的顺序准确性。

具体而言,metrics.label_ranking_loss 可以表示为:

$$\text{LabelRankingLoss}(y_i, \hat{y}_i) = \frac{1}{n}\sum_{i=1}^n\frac{1}{|y_i|\cdot (K-|y_i|)}\sum_{j,k}[(y_{ij}=1,y_{ik}=0)\cdot(\hat{y}_{ij}>\hat{y}_{ik})]$$

其中 $y_i$是真实标签向量(二进制),$\hat{y}_i$是预测标签概率向量,n是样本数量, K是标签数量。$\text{LabelRankingLoss}$的值介于 0 和 1 之间。当 metrics.label_ranking_loss 越接近 0 时,表示模型在标签排序方面性能越好。

因此,metrics.label_ranking_loss 表示模型在标签排序方面的错误率,是用于评估多标签分类问题的一种重要指标,可以帮助识别模型的弱点并提出改进措施。

聚类指标

方法 说明
metrics.adjusted_mutual_info_score(…[, …])
metrics.adjusted_rand_score(labels_true, …)
metrics.calinski_harabasz_score(X, labels) Compute the Calinski and Harabasz score.
metrics.davies_bouldin_score(X, labels) Compute the Davies-Bouldin score.
metrics.completeness_score(labels_true, …)
metrics.cluster.contingency_matrix(…[, …]) Build a contingency matrix describing the relationship between labels.
metrics.cluster.pair_confusion_matrix(…) Pair confusion matrix arising from two clusterings [R9ca8fd06d29a-1].
metrics.fowlkes_mallows_score(labels_true, …)
metrics.homogeneity_completeness_v_measure(…) Compute the homogeneity and completeness and V-Measure scores at once.
metrics.homogeneity_score(labels_true, …)
metrics.mutual_info_score(labels_true, …)
metrics.normalized_mutual_info_score(…[, …])
metrics.rand_score(labels_true, labels_pred)
metrics.silhouette_score(X, labels, *[, …]) Compute the mean Silhouette Coefficient of all samples.
metrics.silhouette_samples(X, labels, *[, …]) Compute the Silhouette Coefficient for each sample.
metrics.v_measure_score(labels_true, …[, beta])

metrics.homogeneity_score和metrics.homogeneity_completeness_v_measure

  • homogeneity_score 衡量同一类别中的所有样本是否包含在单个聚类中,即一个簇中只包含一个类别的样本比例。该指标的取值范围在 0 到 1 之间,值越高表示聚类结果中同一类别的样本更可能被分配到相同的簇中。
  • homogeneity_completeness_v_measure 是一组度量聚类结果质量的指标,由三个部分组成:homogeneity_score、completeness_score 和 v_measure_score。其中 homogeneity_score 衡量了所有同类别样本是否被分配到同一簇的情况,completeness_score 衡量了所有属于同一簇的样本是否属于同一类别,v_measure_score 是 homogeneity_score 和 completeness_score 的加权平均数,是这两者的调和平均值。

因此,metrics.homogeneity_score 和 metrics.homogeneity_completeness_v_measure 最大的区别在于前者只考虑了样本的同质性(一类样本是否被分配到一起),而后者则既考虑了聚类结果对同类别样本的覆盖率,也同时考虑了所有属于同一簇的样本是否属于同一类别。因此,在选择指标时需要根据实际问题所需的评估角度进行选择。

metrics.silhouette_score和metrics.silhouette_samples

  • silhouette_score 衡量聚类模型的整体质量,并通过计算所有样本的平均 silhouette 分数来表示。silhouette 分数是一种度量样本与其所属簇和邻近簇之间距离的方法。该指标的取值范围在 -1 到 1 之间,负值表示样本不适合其分配的簇。
  • silhouette_samples 计算每个样本的 silhouette 分数,以便更好地理解聚类结果对每个样本的影响。该指标可以用于检查数据集中是否存在离群点或异常情况,并且可以帮助识别聚类结果中哪些样本被正确或错误分类。

因此,两者的主要区别在于输出结果不同。metrics.silhouette_score 输出所有样本的平均 silhouette 分数,而 metrics.silhouette_samples 输出每个样本的 silhouette 分数。 metrics.silhouette_score 旨在提供有关整个聚类模型性能的总体概述,而 metrics.silhouette_samples 的目的是为了深入了解每个样本的聚类结果并识别问题。

metrics.calinski_harabasz_score

metrics.calinski_harabasz_score 是一种用于评估聚类模型性能的指标,它基于簇内离散度和簇间离散度的比率来计算聚类效果。该指标越大,聚类效果越好。

具体而言,metrics.calinski_harabasz_score 可以表示为:

$$\text{CH}(X,Y) = \frac{\text{tr}(B_k)}{\text{tr}(W_k)}\cdot \frac{n-k}{k-1}$$

其中X是数据集, Y是对X进行聚类后得到的标签,k是聚类中心数量,n是样本数量。$\text{tr}(B_k)$和 $\text{tr}(W_k)$分别是簇之间的离散度和簇内的离散度,可以通过以下方式计算:

$$\text{tr}(B_k) = \sum_{j=1}^k n_j||c_j-c||_2^2$$

T$$\text{tr}(W_k) = \sum_{j=1}^k\sum_{x_i\in C_j} ||x_i – c_j||_2^2$$

其中 $C_j$表示第 j个簇,$n_j$表示第 j个簇中样本的数量,$c_j$表示第 j个簇的中心点,c表示所有样本的中心点。

因此,metrics.calinski_harabasz_score 衡量了聚类结果中聚类中心的分布情况和样本之间的距离,可以用于评估聚类模型的性能,并且适用于大部分类型的聚类问题。

metrics.davies_bouldin_score

metrics.davies_bouldin_score 是一种用于评估聚类模型性能的指标,它通过计算簇内离散度和簇间距离之间的比率来测量聚类结果的质量。该指标越小,表示聚类效果越好。

具体而言,对于一个聚类模型,metrics.davies_bouldin_score 可以表示为:

$$\text{DB} = \frac{1}{k}\sum_{i=1}^k\max_{j \neq i}(\frac{\text{intra}_{i} + \text{intra}_{j}}{\text{dist}(c_i, c_j)})$$

其中kkk 是聚类中心数量,$\text{intra}_{i}$表示簇 i内所有样本的平均距离,$\text{dist}(c_i, c_j)$表示聚类中心 $c_i$和 $c_j$之间的距离。该指标旨在最小化每个聚类内部距离和不同聚类之间的距离之间的比率,从而提高聚类效果。

因此,metrics.davies_bouldin_score 是一种用于评估聚类模型性能的指标,可以帮助识别哪些聚类效果更好,并对不同聚类效果进行排名。它适用于各种类型的聚类问题,但需要注意的是,该指标对于不同聚类数量的数据可能会有所偏差。

metrics.cluster.contingency_matrix

metrics.cluster.contingency_matrix 是一种用于评估聚类模型性能的指标,它可以计算聚类结果与真实标签之间的交叉表(contingency table)。该指标通常用于评估无监督学习中的聚类问题。

具体而言,metrics.cluster.contingency_matrix 可以表示为:

$$C = [c_{ij}]$$

其中 $c_{ij}$表示聚类结果中被分配到第i个簇并且真实标签为第j类的样本数量。因此,矩阵 C的行表示聚类结果的簇,列表示真实标签的类别,每个元素表示属于对应类别和簇的样本数量。

这个指标可以衡量聚类结果与真实标签之间的差异,并可视化不同聚类效果的质量。通过比较不同簇和类别之间的交叉表,可以查看聚类结果的正确性和纯度。在聚类问题中,一个完美的聚类结果应该会得到一个非常高的对角线值。

因此,metrics.cluster.contingency_matrix 是一种有用的评估指标,用于检查聚类问题的质量,并识别潜在的错误和缺陷。该指标适用于各种类型的聚类问题,但需要注意的是,如果数据集中存在离散值或类别之间的相互依赖性,则可能不适用于连续性特征的聚类。

metrics.cluster.pair_confusion_matrix

metrics.cluster.pair_confusion_matrix 是一种用于评估聚类模型性能的指标,它可以计算聚类结果和真实标签之间的匹配程度。该指标旨在衡量聚类算法中误分类率和正确分类率。

具体而言,对于一个聚类模型的输出结果 $y_{pred}$ 和真实标签 $y_{true}$,metrics.cluster.pair_confusion_matrix 可以表示为:

$$[TP, FP]$$

其中 TP 表示所有被正确分类的样本数量,FP 表示所有被错误分类的样本数量。假设簇的数量为 k,那么 TP 和 FP 的长度都是 k的平方。

该指标适用于二元分类问题中的多标签分类问题,例如每个样本可能包含多个标签或属性。通过计算 TP 和 FP 的值,可以识别哪些标签被正确分类,并查找错误分类的原因。这样,就可以对聚类算法进行调整和优化,从而提高聚类效果。

因此,metrics.cluster.pair_confusion_matrix 是一种有用的评估指标,可以帮助识别聚类算法中可能出现的错误和缺陷,并提供改进方案。

双聚类指标Biclustering metrics

方法 说明
metrics.consensus_score(a, b, *[, similarity]) The similarity of two sets of biclusters.

metrics.consensus_score

etrics.consensus_score 是一种用于评估双聚类算法性能的指标,它可以通过比较多个聚类结果的一致性来提高鲁棒性。该指标适用于高维数据集中的模式识别、聚类和分类问题。

具体而言,对于 n个聚类结果,metrics.consensus_score 可以表示为:

$$C = \frac{1}{\binom {n}{2}}\sum_{i<j}\text{adjusted\_rand\_score}(y_i, y_j)$$

其中,$\binom {n}{2}$ 是从n个聚类结果中选择两个聚类组合的总数。函数 adjusted_rand_score 是一种评估聚类算法性能的指标,可以衡量聚类结果之间的相似度。

因此,metrics.consensus_score 通过将多个聚类结果进行聚合,提高了模型的鲁棒性和稳定性。该指标可以帮助识别不同聚类算法之间的一致性程度,并且通常与其他评估指标(如 homogeneity_score 和 completeness_score)结合使用,从而更好地理解聚类结果的质量。

距离指标Distance metrics

方法 说明
metrics.DistanceMetric Uniform interface for fast distance metric functions.

metrics.DistanceMetric

metrics.DistanceMetric是scikit-learn库中用于计算距离度量的类。它可以用于计算一组向量之间的距离度量,例如欧几里得距离,曼哈顿距离,切比雪夫距离等。

可以使用DistanceMetric类来创建一个距离度量器对象,然后使用该对象计算一组向量之间的距离。常见的距离度量包括:

  • “euclidean”:欧几里得距离
  • “manhattan”:曼哈顿距离
  • “chebyshev”:切比雪夫距离
  • “minkowski”:闵可夫斯基距离

除了这些常见的距离度量之外,sklearn.metrics.DistanceMetric还支持自定义距离度量函数,只需传入一个自定义函数即可。

成对指标Pairwise metrics

方法 说明
metrics.pairwise.additive_chi2_kernel(X[, Y]) 计算X和Y观测值之间的加性方卡方核
metrics.pairwise.chi2_kernel(X[, Y, gamma]) 计算卡方核
metrics.pairwise.cosine_similarity(X[, Y, …]) 计算余弦相似度
metrics.pairwise.cosine_distances(X[, Y]) 计算余弦距离
metrics.pairwise.distance_metrics() 用于距离度量的模块
metrics.pairwise.euclidean_distances(X[, Y, …]) 计算欧几里得距离
metrics.pairwise.haversine_distances(X[, Y]) 计算Haversine距离
metrics.pairwise.kernel_metrics() 用于核函数度量
metrics.pairwise.laplacian_kernel(X[, Y, gamma]) Compute the laplacian kernel between X and Y.
metrics.pairwise.linear_kernel(X[, Y, …]) Compute the linear kernel between X and Y.
metrics.pairwise.manhattan_distances(X[, Y, …]) Compute the L1 distances between the vectors in X and Y.
metrics.pairwise.nan_euclidean_distances(X) Calculate the euclidean distances in the presence of missing values.
metrics.pairwise.pairwise_kernels(X[, Y, …]) Compute the kernel between arrays X and optional array Y.
metrics.pairwise.polynomial_kernel(X[, Y, …]) Compute the polynomial kernel between X and Y.
metrics.pairwise.rbf_kernel(X[, Y, gamma]) Compute the rbf (gaussian) kernel between X and Y.
metrics.pairwise.sigmoid_kernel(X[, Y, …]) Compute the sigmoid kernel between X and Y.
metrics.pairwise.paired_euclidean_distances(X, Y) Compute the paired euclidean distances between X and Y.
metrics.pairwise.paired_manhattan_distances(X, Y) Compute the paired L1 distances between X and Y.
metrics.pairwise.paired_cosine_distances(X, Y) Compute the paired cosine distances between X and Y.
metrics.pairwise.paired_distances(X, Y, *[, …]) Compute the paired distances between X and Y.
metrics.pairwise_distances(X[, Y, metric, …]) Compute the distance matrix from a vector array X and optional Y.
metrics.pairwise_distances_argmin(X, Y, *[, …]) Compute minimum distances between one point and a set of points.
metrics.pairwise_distances_argmin_min(X, Y, *) Compute minimum distances between one point and a set of points.
metrics.pairwise_distances_chunked(X[, Y, …]) Generate a distance matrix chunk by chunk with optional reduction.

参考链接:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注