Scikit Learn 简明教程
Scikit Learn - Clustering Performance Evaluation
有各种函数可以帮助我们评估聚类算法的性能。
以下是 Scikit-learn 提供的一些用于评估聚类性能的重要且使用最广泛的函数 −
Adjusted Rand Index
Rand Index 是一个计算两个聚类之间相似性度量的函数。对于此计算,Rand 索引考虑了所有样本对,并计算在预测聚类和真实聚类中分配到相似或不同聚类中的对数。然后,通过使用以下公式将原始 Rand 索引得分“调整为机会”,得到调整后的 Rand 索引得分 −
它有两个参数,即 labels_true (即 ground truth 类标签)和 labels_pred (即要评估的聚类标签)。
Mutual Information Based Score
互信息是一个计算两个分配一致性的函数。它忽略了排列。有以下版本可用 −
Normalized Mutual Information (NMI)
Scikit learn 具有 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)
Fowlkes-Mallows Score
Fowlkes-Mallows 函数测量一组点的两个聚类的相似性。它可以定义为成对精度和召回率的几何平均值。
在数学上,
此处, TP = True Positive − 属于真实标签和预测标签中相同聚类的点对数。
FP = False Positive − 属于真实标签中相同聚类的点对数,但不属于预测标签中相同聚类的点对数。
FN = False Negative − 属于预测标签中相同聚类的点对数,但不属于真实标签中相同聚类的点对数。
Scikit learn 具有 sklearn.metrics.fowlkes_mallows_score 模块 −
Silhouette Coefficient
Silhouette 函数将使用所有样本的平均类内距离和每个样本的平均最近类距离计算所有样本的平均 Silhouette 系数。
在数学上,
此处,a 是类内距离。
并且,b 是平均最近类距离。
Scikit learn 具有 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')