Scikit Learn-集群性能评估

Scikit Learn-集群性能评估 (Scikit Learn - Clustering Performance Evaluation)

There are various functions with the help of which we can evaluate the performance of clustering algorithms.

在各种功能的帮助下,我们可以评估聚类算法的性能。

Following are some important and mostly used functions given by the Scikit-learn for evaluating clustering performance −

以下是Scikit学习提供的一些重要且最常用的函数,用于评估集群性能-

调整后的兰德指数 (Adjusted Rand Index)

Rand Index is a function that computes a similarity measure between two clustering. For this computation rand index considers all pairs of samples and counting pairs that are assigned in the similar or different clusters in the predicted and true clustering. Afterwards, the raw Rand Index score is ‘adjusted for chance’ into the Adjusted Rand Index score by using the following formula −

$$Adjusted\:RI=\left(RI-Expected_{-}RI\right)/\left(max\left(RI\right)-Expected_{-}RI\right)$$

兰德指数是一项功能,用于计算两个聚类之间的相似性度量。 对于此计算,兰德指数考虑了在预测和真实聚类中分配给相似或不同聚类中的所有样本对和计数对。 然后,使用以下公式将原始的兰德指数得分“调整为偶然”成调整后的兰德指数得分-

$$ Adjusted \:RI = \ left(RI-Expected _ {-} RI \ right)/ \ left(max \ left(RI \ right)-Expected _ {-} RI \ right)$$

It has two parameters namely labels_true, which is ground truth class labels, and labels_pred, which are clusters label to evaluate.

它有两个参数,即labels_true (是基础事实类标签)和labels_pred (它们是要评估的簇标签)。

(Example)


from sklearn.metrics.cluster import adjusted_rand_score
   
   labels_true = [0, 0, 1, 1, 1, 1]
   labels_pred = [0, 0, 2, 2, 3, 3]

adjusted_rand_score(labels_true, labels_pred)

输出量 (Output)


0.4444444444444445

Perfect labeling would be scored 1 and bad labelling or independent labelling is scored 0 or negative.

完美标签的评分为1,不良标签或独立标签的评分为0或否定。

基于互信息的分数 (Mutual Information Based Score)

Mutual Information is a function that computes the agreement of the two assignments. It ignores the permutations. There are following versions available −

互信息是一种计算两个分配的一致性的函数。 它忽略了排列。 有以下可用的版本-

标准化互信息(NMI) (Normalized Mutual Information (NMI))

Scikit learn have sklearn.metrics.normalized_mutual_info_score module.

Scikit学习具有sklearn.metrics.normalized_mutual_info_score模块。

(Example)


from sklearn.metrics.cluster import normalized_mutual_info_score
   
   labels_true = [0, 0, 1, 1, 1, 1]
   labels_pred = [0, 0, 2, 2, 3, 3]

normalized_mutual_info_score (labels_true, labels_pred)

输出量 (Output)


0.7611702597222881

调整后的共同信息(AMI) (Adjusted Mutual Information (AMI))

Scikit learn have sklearn.metrics.adjusted_mutual_info_score module.

Scikit学习具有sklearn.metrics.adjusted_mutual_info_score模块。

(Example)


from sklearn.metrics.cluster import adjusted_mutual_info_score

   labels_true = [0, 0, 1, 1, 1, 1]
   labels_pred = [0, 0, 2, 2, 3, 3]

adjusted_mutual_info_score (labels_true, labels_pred)

输出量 (Output)


0.4444444444444448

福克斯-锦葵分数 (Fowlkes-Mallows Score)

The Fowlkes-Mallows function measures the similarity of two clustering of a set of points. It may be defined as the geometric mean of the pairwise precision and recall.

Fowlkes-Mallows函数测量一组点的两个聚类的相似性。 它可以定义为成对精度和查全率的几何平均值。

Mathematically,

$$FMS=\frac{TP}{\sqrt{\left(TP+FP\right)\left(TP+FN\right)}}$$

数学上

$$ FMS = \ frac {TP} {\ sqrt {\ left(TP + FP \ right)\ left(TP + FN \ right)}} $$

Here, TP = True Positive − number of pair of points belonging to the same clusters in true as well as predicted labels both.

在这里, TP =真实正值 -属于相同簇的真实点对数以及预测的标记数。

FP = False Positive − number of pair of points belonging to the same clusters in true labels but not in the predicted labels.

FP =假阳性 -属于真实标签中的相同簇但不属于预测标签中的点对的数量。

FN = False Negative − number of pair of points belonging to the same clusters in the predicted labels but not in the true labels.

FN =假负 -预测标签中属于同一簇的点对的数量,但不是真实标签中的点。

The Scikit learn has sklearn.metrics.fowlkes_mallows_score module −

Scikit学习具有sklearn.metrics.fowlkes_mallows_score模块-

(Example)


from sklearn.metrics.cluster import fowlkes_mallows_score

   labels_true = [0, 0, 1, 1, 1, 1]
   labels_pred = [0, 0, 2, 2, 3, 3]

fowlkes_mallows__score (labels_true, labels_pred)

输出量 (Output)


0.6546536707079771

轮廓系数 (Silhouette Coefficient)

The Silhouette function will compute the mean Silhouette Coefficient of all samples using the mean intra-cluster distance and the mean nearest-cluster distance for each sample.

Silhouette函数将使用每个样本的平均群集内距离和平均最近群集距离来计算所有样本的平均Silhouette系数。

Mathematically,

$$S=\left(b-a\right)/max\left(a,b\right)$$

数学上

$$ S = \左(ba \右)/ max \左(a,b \右)$$

Here, a is intra-cluster distance.

在此,a是集群内距离。

and, b is mean nearest-cluster distance.

b是平均最近集群距离。

The Scikit learn have sklearn.metrics.silhouette_score module −

Scikit学习具有sklearn.metrics.silhouette_score模块-

(Example)


from sklearn import metrics.silhouette_score
from sklearn.metrics import pairwise_distances
from sklearn import datasets
import numpy as np
from sklearn.cluster import KMeans
dataset = datasets.load_iris()
X = dataset.data
y = dataset.target

kmeans_model = KMeans(n_clusters = 3, random_state = 1).fit(X)
labels = kmeans_model.labels_
silhouette_score(X, labels, metric = 'euclidean')

输出量 (Output)


0.5528190123564091

权变矩阵 (Contingency Matrix)

This matrix will report the intersection cardinality for every trusted pair of (true, predicted). Confusion matrix for classification problems is a square contingency matrix.

此矩阵将报告(真实,预测的)每个受信任对的交集基数。 分类问题的混淆矩阵是平方列联矩阵。

The Scikit learn have sklearn.metrics.contingency_matrix module.

Scikit学习了sklearn.metrics.contingency_matrix模块。

(Example)


from sklearn.metrics.cluster import contingency_matrix
x = ["a", "a", "a", "b", "b", "b"]
y = [1, 1, 2, 0, 1, 2]
contingency_matrix(x, y)

输出量 (Output)


array([
   [0, 2, 1],
   [1, 1, 1]
])

The first row of above output shows that among three samples whose true cluster is “a”, none of them is in 0, two of the are in 1 and 1 is in 2. On the other hand, second row shows that among three samples whose true cluster is “b”, 1 is in 0, 1 is in 1 and 1 is in 2.

上面输出的第一行显示了真实簇为“ a”的三个样本中,没有一个在0中,两个在1中,而1在2中。另一方面,第二行显示了在三个样本中其真实簇为“ b”,1在0中,1在1中,1在2中。

翻译自: https://www.tutorialspoint.com/scikit_learn/scikit_learn_clustering_performance_evaluation.htm

### 回答1: Scikit-learn是一个基于Python机器学习库,它有以下优点: 1. 易于使用: scikit-learn提供了一个统一的界面,可以简化机器学习任务的实现。 2. 高效: scikit-learn内部使用了大量优化过的算法, 它可以高效地处理大规模数据. 3. 可扩展性: scikit-learn提供了大量的可扩展性选项,如并行计算, 可以满足大规模学习的需求. 4. 丰富的文档和社区支持: scikit-learn有丰富的文档和教程,并有一个活跃的社区可以提供帮助. 5. 可以方便的和其他科学计算库配合使用: scikit-learn可以与 NumPy, pandas 和 Matplotlib 等科学计算库很好地配合使用. ### 回答2: Scikit-learn是一个强大的Python机器学习库,具有以下几个优点。 首先,Scikit-learn具有简单易用的接口和一致的编程模式,使得用户能够轻松地构建和实现机器学习算法。它提供了丰富的工具和函数,可以用于数据预处理、特征选择、模型评估等多个环节,大大简化了机器学习流程。 其次,Scikit-learn拥有丰富的机器学习算法和模型库。它覆盖了包括分类、回归、聚类、降维等多个领域的算法,包括支持向量机(SVM)、随机森林、K均值聚类等等。这使得用户可以根据自己的需求选择适合的算法,同时也为教育和研究人员提供了便利。 第三,Scikit-learn具有良好的性能和可扩展性。它底层采用了NumPy、SciPy和Cython等高性能的科学计算库,可以处理大规模数据集和高维特征。此外,Scikit-learn还支持并行计算和分布式计算,利用多核CPU和集群计算资源,进一步提升算法的运行效率。 最后,Scikit-learn是一个开源项目,拥有庞大的社区支持和活跃的开发者社区。这意味着用户可以很容易地获取相关的文档、示例代码和技术支持。同时,开源的特点也使得Scikit-learn能够持续获得改进和更新,保持与最新的研究成果和技术进展保持同步。 综上所述,Scikit-learn作为一个强大的Python机器学习库,具有简单易用的接口、丰富的算法库、良好的性能和可扩展性以及庞大的社区支持。无论是对于机器学习初学者还是专业从业者,Scikit-learn都是一个值得推荐的工具。 ### 回答3: Scikit-learn是一个流行的Python机器学习库,具有以下几个优点: 1. 易于使用:Scikit-learn为用户提供了简单且一致的API,使得数据预处理、特征工程、模型训练和评估的过程变得简单易懂。对于初学者和有经验的用户来说,Scikit-learn是一个非常友好的工具。 2. 全面的功能:Scikit-learn提供了丰富的机器学习算法和工具,包括分类、回归、聚类、降维、模型选择等等。这使得用户能够方便地使用不同的模型来解决各种问题,满足各种应用的需求。 3. 高性能Scikit-learn是用Cython实现的,在速度和性能方面表现出色。它能够处理大规模的数据集,并且对内存使用进行了优化。此外,Scikit-learn还支持并行化处理,可以在多核处理器上进行高效计算。 4. 强大的文档和社区支持:Scikit-learn拥有完善的文档,包括详细的教程、示例和API文档。用户可以轻松地查找和学习需要的知识。此外,Scikit-learn拥有活跃的社区,用户可以在论坛上提问、分享和交流,得到及时的帮助和反馈。 5. 兼容性和扩展性:Scikit-learn与其他Python库和工具具有良好的兼容性,例如NumPy、SciPy和Pandas等。它也可以与其他机器学习库和框架集成,如TensorFlow和PyTorch。这使得用户可以方便地在不同的环境中使用Scikit-learn,并根据需要进行扩展和定制。 总之,Scikit-learn作为一个全面而强大的机器学习库,拥有易用性、性能优秀、文档丰富和社区活跃等优点,使得它成为数据科学家和机器学习从业者的首选工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值