在moon数据集上对三种聚类方法进行性能对比
在有真实值的情况下对聚类算法性能对比
有一些指标可用于评估聚类算法相对于真实聚类的结果,其中最重要的是调整 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数据集上对三种聚类方法进行性能对比相关推荐
- 计算机win7安装打印机,win7打印机安装不上的三种解决方法(图文)
打印机是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上.许多新手用户都在为win7专业版系统打印机安装不上的问题困扰着,我们都知道安装打印机的方法是很简单,但是怎么也安装不上打印机的问题确 ...
- R语言的三种聚类方法
一.层次聚类 1)距离和相似系数 r语言中使用dist(x, method = "euclidean",diag = FALSE, upper = FALSE, p = 2) 来计 ...
- 【Android Protobuf 序列化】Protobuf 性能测试 ( fastjson 序列化与反序列化 | gson 序列化与反序列化 | 三种序列化与反序列化性能对比 )
文章目录 一.导入依赖库 二.构造 JavaBean 三.fastjson 序列化与反序列化 四.gson 序列化与反序列化 五.完整代码 1.主界面代码 2.JSON 测试代码 3.执行结果 六.参 ...
- Kmeans、DBSCAN、层次聚类等三种聚类算法笔记
目录 一.Kmeans模型 1 算法思想及步骤 2 最佳k值的确定方法 2.1 拐点法 2.2 轮廓系数法 2.3 间隔统计量法 3 Kmeans算法的缺点 二.DBSCAN算法 三.层次聚类算法 1 ...
- python 三种聚类算法(K-means,AGNES,DBScan)
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan) 更新时间:2019年06月27日 14:44:44 作者:weixin_42134141 这篇文章主要介绍了pyth ...
- ASP.NET文件上传的三种基本方法
ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. <form i ...
- Android手机teams,在iOS和Android上自定义Microsoft Teams体验的三种最佳方法
以下是您可以在iOS和Android上自定义Microsoft Teams应用程序以使其成为自己的三种方法 1. 开启黑暗模式,以便iOS和Android上的小组中的消息和其他内容更易于理解和阅读 2 ...
- ASP.NET上传文件的三种基本方法
ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关 ...
- 在web页面上快速生成二维码的三种实用方法
转载自:在web页面上快速生成二维码的三种实用方法 二维码是桌面和移动端快速分享的高效手段之一,这里介绍两个不错的快速开发二维码的方法,和大家分享一下~~ 方法1:使用极客标签提供的二维码快速生成服务 ...
最新文章
- pandas计算滑动窗口中的数值总和实战(Rolling Sum of a Pandas Column):计算单数据列滑动窗口中的数值总和(sum)、计算多数据列滑动窗口中的数值总和(sum)
- 使用 Web 标准生成 ASP.NET 2.0 Web 站点
- 互斥锁 QMutex Class 的翻译
- 2018 中国服务创新大会 | 早鸟票正式开售
- linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)
- 系统垃圾清理.cmd
- Breadth-first Search(广度优先搜索)专题2
- 【今日CV 视觉论文速览】21 Nov 2018
- java装饰模式理解_Java设计模式之装饰模式趣谈
- 【动态规划】线性dp P1043 数字游戏
- 高可用结合gfs2,,实现集群文件系统以及集群逻辑卷。
- 苹果cmsv10自适应高仿时光影院视频网站免费模板
- python三大神器
- Java程序员必会之数据结构与算法全梳理
- springcloud以及四大神兽面试涉及知识总结(持续更新)
- 计算机专业刊头,如何自己动手做电子报纸?
- 京东云mysql镜像_京东云数据库RDS SQL Server高可用概述
- 黑平台Seener Tech Limtied在MT5上面搭建虚假交易 鼓动操作爆仓
- 用php照片艺术化,Lab:照片艺术化调色处理介绍
- 洛蒂(Lottie)