美文网首页
聚类算法的评估

聚类算法的评估

作者: dreampai | 来源:发表于2019-01-16 11:39 被阅读0次

1、用真实值评估聚类

调整兰德系数 (Adjusted Rand index)

image.png image.png
from sklearn.metrics.cluster import adjusted_rand_score
from sklearn.datasets import make_moons
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans,AgglomerativeClustering,DBSCAN
import numpy as np
import matplotlib.pyplot as plt
import mglearn
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,axes=plt.subplots(1,4,figsize=(15,3),subplot_kw={'xticks':(),'yticks':()})

# 需要使用的算法
algorithms=[KMeans(n_clusters=2),AgglomerativeClustering(n_clusters=2),DBSCAN()]
# 创建一个随机的簇分配,作为参考
random_state=np.random.RandomState(seed=0)
random_clusters=random_state.randint(low=0,high=2,size=len(X))

axes[0].scatter(X_scaled[:,0],X_scaled[:,1],c=random_clusters,cmap=mglearn.cm3,s=60)
axes[0].set_title('Random assignment - ARI:{:.2f}'.format(adjusted_rand_score(y,random_clusters)))
for ax,algorithm in zip(axes[1:],algorithms):
    clusters=algorithm.fit_predict(X_scaled)
    ax.scatter(X_scaled[:,0],X_scaled[:,1],c=clusters,cmap=mglearn.cm3,s=60)
    ax.set_title('{}- ARI:{:.2f}'.format(algorithm.__class__.__name__,adjusted_rand_score(y,clusters)))
plt.show()
image.png

2、在没有真实值的情况下评估聚类

轮廓系数

轮廓系数是类的密集与分散程度的评价指标。它会随着类的规模增大而增大。彼此相距很远,本身很密集的类,其轮廓系数较大,彼此集中,本身很大的类,其轮廓系数较小。 轮廓系数是通过所有样本计算出来的,计算每个样本分数的均值,计算公式如下:

a 是每一个类中样本彼此距离的均值,b是一个类中样本与其最近的那个类的所有样本的距离的均值.png
from sklearn.metrics.cluster import silhouette_score
from sklearn.datasets import make_moons
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans,AgglomerativeClustering,DBSCAN
import numpy as np
import matplotlib.pyplot as plt
import mglearn

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,axes=plt.subplots(1,4,figsize=(15,3),subplot_kw={'xticks':(),'yticks':()})

# 需要使用的算法
algorithms=[KMeans(n_clusters=2),AgglomerativeClustering(n_clusters=2),DBSCAN()]

# 创建一个随机的簇分配,作为参考
random_state=np.random.RandomState(seed=0)
random_clusters=random_state.randint(low=0,high=2,size=len(X))

axes[0].scatter(X_scaled[:,0],X_scaled[:,1],c=random_clusters,cmap=mglearn.cm3,s=60)
axes[0].set_title('Random assignment:{:.2f}'.format(silhouette_score(X_scaled,random_clusters)))
for ax,algorithm in zip(axes[1:],algorithms):
    clusters=algorithm.fit_predict(X_scaled)
    ax.scatter(X_scaled[:,0],X_scaled[:,1],c=clusters,cmap=mglearn.cm3,s=60)
    ax.set_title('{}:{:.2f}'.format(algorithm.__class__.__name__,silhouette_score(X_scaled,clusters)))
plt.show()
image.png

参考链接

本文作为笔记记录,如果侵权,联系我删除

相关文章

  • 聚类算法总结

    1、K 均值聚类 2、凝聚聚类 3、DBSCAN 算法 4、聚类算法的评估

  • 08 聚类算法 - 聚类算法的衡量指标

    07 聚类算法 - 代码案例三 - K-Means算法和Mini Batch K-Means算法效果评估 四、聚类...

  • 聚类算法的评估

    聚类评估的任务是估计在数据集上进行聚类的可行性,以及聚类方法产生结果的质量。这一过程又分为三个子任务: 1、估计聚...

  • 聚类算法的评估

    1、用真实值评估聚类 调整兰德系数 (Adjusted Rand index) 2、在没有真实值的情况下评估聚类 ...

  • 聚类分析

    1,聚类方法: Python 主要聚类分析方法: 2,聚类分析算法评估 ☉ Purity评估方法 ☉ RI评价法 ...

  • 聚类算法模型评估

    ● 混淆矩阵● 均一性● 完整性● V-measure● 调整兰德系数(ARI)● 调整互信息(AMI)● 轮廓系...

  • 机器学习day18聚类算法评价

    聚类算法评估 假设没有外部标签数据,我们怎么评价不同聚类算法的优劣? 非监督学习往往没有标注数据,这是模型,算法的...

  • Clustering

    本文结构安排 经典聚类算法:线性聚类 Kmeans 经典聚类算法:非线性聚类 DBSCAN、谱聚类 新兴聚类算法:...

  • 11 聚类算法 - 密度聚类 - DBSCAN、MDCA

    09 聚类算法 - 层次聚类10 聚类算法 - 代码案例四 - 层次聚类(BIRCH)算法参数比较 七、密度聚类概...

  • 07 聚类算法 - 代码案例三 - K-Means算法和Mini

    03 聚类算法 - K-means聚类04 聚类算法 - 代码案例一 - K-means聚类05 聚类算法 - 二...

网友评论

      本文标题:聚类算法的评估

      本文链接:https://www.haomeiwen.com/subject/mgnpdqtx.html