在有真实值的情况下对聚类算法性能对比

有一些指标可用于评估聚类算法相对于真实聚类的结果,其中最重要的是调整 rand 指数(adjusted rand index,ARI)和归一化互信息(normalized mutual information, NMI),二者都给出了定量的度量,其最佳值为 1,0 表示不相关的聚类(虽然 ARI 可以取负值)。下面我们使用 ARI 来比较 k 均值、凝聚聚类和 DBSCAN 算法。
注意,不能使用之前评估监督学习算法的Accuracy Score来评估聚类算法,因为聚类算法的结果不具有先验性。

#计算调整rand指数ARI
from sklearn.metrics.cluster import adjusted_rand_score
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
import numpy as npX, 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': ()})
# 列出要使用的算法
from sklearn.cluster import DBSCAN, KMeans, AgglomerativeClustering
algorithms = [KMeans(n_clusters=2), AgglomerativeClustering(n_clusters=2),DBSCAN()]# 创建一个随机的簇分配,作为参考
import mglearn
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)))


在moon数据集上对三种聚类方法进行性能对比相关推荐

  1. 计算机win7安装打印机,win7打印机安装不上的三种解决方法(图文)

    打印机是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上.许多新手用户都在为win7专业版系统打印机安装不上的问题困扰着,我们都知道安装打印机的方法是很简单,但是怎么也安装不上打印机的问题确 ...

  2. R语言的三种聚类方法

    一.层次聚类 1)距离和相似系数 r语言中使用dist(x, method = "euclidean",diag = FALSE, upper = FALSE, p = 2) 来计 ...

  3. 【Android Protobuf 序列化】Protobuf 性能测试 ( fastjson 序列化与反序列化 | gson 序列化与反序列化 | 三种序列化与反序列化性能对比 )

    文章目录 一.导入依赖库 二.构造 JavaBean 三.fastjson 序列化与反序列化 四.gson 序列化与反序列化 五.完整代码 1.主界面代码 2.JSON 测试代码 3.执行结果 六.参 ...

  4. Kmeans、DBSCAN、层次聚类等三种聚类算法笔记

    目录 一.Kmeans模型 1 算法思想及步骤 2 最佳k值的确定方法 2.1 拐点法 2.2 轮廓系数法 2.3 间隔统计量法 3 Kmeans算法的缺点 二.DBSCAN算法 三.层次聚类算法 1 ...

  5. python 三种聚类算法(K-means,AGNES,DBScan)

    python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan) 更新时间:2019年06月27日 14:44:44   作者:weixin_42134141 这篇文章主要介绍了pyth ...

  6. ASP.NET文件上传的三种基本方法

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. <form i ...

  7. Android手机teams,在iOS和Android上自定义Microsoft Teams体验的三种最佳方法

    以下是您可以在iOS和Android上自定义Microsoft Teams应用程序以使其成为自己的三种方法 1. 开启黑暗模式,以便iOS和Android上的小组中的消息和其他内容更易于理解和阅读 2 ...

  8. ASP.NET上传文件的三种基本方法

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关 ...

  9. 在web页面上快速生成二维码的三种实用方法

    转载自:在web页面上快速生成二维码的三种实用方法 二维码是桌面和移动端快速分享的高效手段之一,这里介绍两个不错的快速开发二维码的方法,和大家分享一下~~ 方法1:使用极客标签提供的二维码快速生成服务 ...

最新文章

  1. pandas计算滑动窗口中的数值总和实战(Rolling Sum of a Pandas Column):计算单数据列滑动窗口中的数值总和(sum)、计算多数据列滑动窗口中的数值总和(sum)
  2. 使用 Web 标准生成 ASP.NET 2.0 Web 站点
  3. 互斥锁 QMutex Class 的翻译
  4. 2018 中国服务创新大会 | 早鸟票正式开售
  5. linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)
  6. 系统垃圾清理.cmd
  7. Breadth-first Search(广度优先搜索)专题2
  8. 【今日CV 视觉论文速览】21 Nov 2018
  9. java装饰模式理解_Java设计模式之装饰模式趣谈
  10. 【动态规划】线性dp P1043 数字游戏
  11. 高可用结合gfs2,,实现集群文件系统以及集群逻辑卷。
  12. 苹果cmsv10自适应高仿时光影院视频网站免费模板
  13. python三大神器
  14. Java程序员必会之数据结构与算法全梳理
  15. springcloud以及四大神兽面试涉及知识总结(持续更新)
  16. 计算机专业刊头,如何自己动手做电子报纸?
  17. 京东云mysql镜像_京东云数据库RDS SQL Server高可用概述
  18. 黑平台Seener Tech Limtied在MT5上面搭建虚假交易 鼓动操作爆仓
  19. 用php照片艺术化,Lab:照片艺术化调色处理介绍
  20. 洛蒂(Lottie)

热门文章

  1. matlab call lapack,matlab 编译loransac,lapack
  2. C语言陷阱之逗号表达式
  3. 本地缓存王者,Caffeine 保姆级教程!给力...
  4. ceac信息化计算机考试试题,计算机ceac考试复习题12套
  5. 英语句式参考纯享版 - 状语从句
  6. 阶段性面试题—js基础面试题
  7. 企业商务差旅信息化管理与移动App
  8. 社会工程学——你被社工了吗?
  9. 记录一次域名转移,天翼云->华为云
  10. 【BZOJ】1018: [SHOI2008]堵塞的交通traffic