用真实世界的数据集对k均值、凝聚聚类和DBSCAN算法进行比较。
1. 用真实值评估聚类
评估聚类算法对真实世界数据集的聚类结果,可以用调整rand指数ARI和归一化互信息NMI。
调整rand指数 (adjusted rand index,ARI)和归一化互信息(normalized mutual information,NMI),二者都给出了定量的度量,最佳值为1,0表示不相关的聚类。
示例,使用 ARI 来比较 k 均值、凝聚聚类和 DBSCAN 算法。
import numpy as np
import matplotlib.pyplot as plt
import mglearn
from sklearn.cluster import KMeans
from sklearn.datasets import make_moons
from sklearn.cluster import AgglomerativeClustering
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler
from sklearn.metrics.cluster import adjusted_rand_score
X, y = make_moons(n_samples=200, noise=0.05, random_state=0)
# 将数据缩放成平均值为0、方差为1
scaler = StandardScaler()
scaler.fit(X)
X_scaled = scaler.transform(X)
fig, ax