KMeans 聚类后的聚类点 (scikit learn)

2023-11-24

我已经使用 sklearn 使用 Kmeans 完成了聚类。虽然它有一种打印质心的方法,但我发现 scikit-learn 没有一种方法来打印每个簇的簇点(或者我到目前为止还没有看到它),这很奇怪。有没有一种巧妙的方法来获取每个簇的簇点?

我目前有这个相当笨拙的代码来完成它,其中 V 是数据集:

def getClusterPoints(V, labels):
    clusters = {}
    for l in range(0, max(labels)+1):
        data_points = []
        indices = [i for i, x in enumerate(labels) if x == l]
        for idx in indices:
            data_points.append(V[idx])
        clusters[l] = data_points
    return clusters

非常感谢建议/链接。

谢谢! PD。


例如

import numpy as np
from sklearn.cluster import KMeans
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data
y = iris.target

estimator = KMeans(n_clusters=3)
estimator.fit(X)

您可以通过以下方式获得每个点的簇

estimator.labels_

Out:

array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1,
   2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2,
   1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1], dtype=int32)

然后获取每个簇的点索引

{i: np.where(estimator.labels_ == i)[0] for i in range(estimator.n_clusters)}

Out:

{0: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
        34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]),
 1: array([ 50,  51,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
         64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,
         78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,
         91,  92,  93,  94,  95,  96,  97,  98,  99, 101, 106, 113, 114,
        119, 121, 123, 126, 127, 133, 138, 142, 146, 149]),
 2: array([ 52,  77, 100, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112,
        115, 116, 117, 118, 120, 122, 124, 125, 128, 129, 130, 131, 132,
        134, 135, 136, 137, 139, 140, 141, 143, 144, 145, 147, 148])}

Edit

如果你想使用点数组X作为值而不是索引数组:

{i: X[np.where(estimator.labels_ == i)] for i in range(estimator.n_clusters)}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KMeans 聚类后的聚类点 (scikit learn) 的相关文章

  • 将 3d NumPy 数组重塑为 2d NumPy 数组时遇到问题

    我正在研究图像处理问题 我的数据以 3 维 NumPy 数组的形式呈现 其中 x y z 条目是图像 z 的 x y 像素 数值强度值 有 100000 张图像 每张图像为 25x25 因此 数据矩阵的大小为 25x25x10000 我试图
  • 有没有办法在 Altair 箱线图中格式化工具提示值

    是否可以格式化箱线图工具提示中的值 由此织女星文档 https vega github io vega lite docs boxplot html tooltip encoding channels 看起来是这样 但我不太清楚如何使用 A
  • nginx/uwsgi 服务器的持久内存中 Python 对象

    我怀疑这是否可能 但这是问题和提出的解决方案 提出的解决方案的可行性是这个问题的对象 我有一些需要可用于所有请求的 全局数据 我将这些数据保存到 Riak 并使用 Redis 作为缓存层以提高访问速度 目前 数据被分为约 30 个逻辑块 每
  • numpy:与索引数组有效求和

    假设我有 2 个矩阵 M 和 N 都有 gt 1 列 我还有一个索引矩阵 I 有 2 列 1 列代表 M 一列代表 N N 的索引是唯一的 但 M 的索引可能出现多次 我想要执行的操作是 for i j in w M i N j 除了 fo
  • SparkSession 初始化需要很长时间

    SparkSession 初始化需要很长时间才能成功 这是我的代码 import findspark findspark init import pyspark from pyspark sql import SparkSession sp
  • 如何在 Django Admin 中禁用事务?

    I used transaction non atomic requests for 被超越的save in Person model如下所示 store models py from django db import models fro
  • 在 Tkinter 中调整另一个小部件内的一个小部件的大小

    我正在开发穆斯堡尔光谱 化学 的模拟软件 但在设计 UI 时 我在使用父窗口小部件调整子窗口小部件的大小时遇到 了问题 当窗口最大化时 父框架会填充额外的空间 但子窗口小部件不会更改其大小 from Tkinter import impor
  • argparse - 禁用相同参数的出现

    我正在尝试使用 argparse 禁用一个命令行中出现相同的参数 python3 argument1 something argument2 argument1 something else 这意味着这应该会引发错误 因为 argument
  • ImportError:无法导入名称 GstRtspServer,未找到内省类型库

    我目前正在尝试让一个简单的 GstRtspServer 程序在外部亚马逊 Linux EC2 服务器上运行 但在让它实际运行时遇到了严重的问题 无论我做什么 当我尝试运行它时 即使程序仅减少到 import gi gi require ve
  • Netmiko OSError:在 send_command 中从未检测到搜索模式:

    我被这个错误困住了 任何人都可以帮助摆脱这个错误 import netmiko Device host xxxxxxxxxx device type cisco nxos username admin password xxxxxxxx c
  • Keras 中的条件批量归一化

    我正在尝试在 Keras 中实现条件批量标准化 我假设我必须创建一个自定义层 因此 我从正常化 https github com keras team keras blob master keras layers normalization
  • 在 pandas eval 中调用 round()、ceiling()、floor()、min()、max()

    正如标题所说 有没有办法在 pandas eval 中支持 round ceiling min max floor 函数 数据框 import pandas as pd import numexpr as ne op d ID 1 2 3
  • 使用 Pytest 捕获 SystemExit 消息

    我正在使用 pytest 编写测试 我遇到了一些函数抛出异常的情况SystemExit如果输入错误 终端上会显示一些错误消息 我想为以下情况编写测试SystemExit抛出并验证输出错误消息中是否有特定字符串 这是代码 def test v
  • PyGTK TreeView 中的自动换行

    如何在 PyGTK TreeView 中自动换行文本 gtk TreeView 中的文本是使用 gtk CellRendererText 渲染的 文本换行归结为在单元格渲染器上设置正确的属性 为了让文本换行 您需要设置wrap width单
  • matplotlib 中矩形面片之间存在不需要的空间

    以下代码绘制两个红色矩形 红色矩形应该彼此相邻 之间没有空间 在 python 图中 这是可以的 在导出的 pdf 中 矩形之间有一个细长但明显的空白 有什么方法可以解决这个问题吗 import matplotlib pyplot as p
  • Pygame 旋转射击

    我和几个朋友一直在编写一种有趣的新射击机制 为了让它发挥作用 我们需要朝玩家面对的方向射击 Sprite 正在使用 Pygame Transform Rotate 进行旋转 我们怎样才能找到一个角度 然后朝那个方向发射子弹呢 这是我们的精灵
  • NLTK 无法找到 stanford-postagger.jar!设置CLASSPATH环境变量

    我正在开发一个项目 需要我使用 nltk 和 python 来标记令牌 所以我想用这个 但遇到了一些问题 我浏览了很多其他已经提出的问题和其他论坛 但我仍然无法解决这个问题 问题是当我尝试执行以下命令时 from nltk tag impo
  • 在IPython笔记本中自动播放声音

    我经常在 IPython 笔记本中运行长时间运行的单元 我希望笔记本在单元完成执行时自动发出蜂鸣声或播放声音 有没有办法在 iPython 笔记本中执行此操作 或者我可以在单元格末尾放置一些命令来自动播放声音 我正在使用 Chrome 如果
  • 在 kivy 中嵌套小部件

    我正在尝试在 kivy 中制作一个界面 我认为即使在完成教程之后 我仍然不了解自定义小部件以及如何对它们进行层次结构的一些基本知识 我认为我有更多的盒模型 html 思维方式 因此小部件嵌套在本机 GUI 中的方式对我来说仍然有点陌生 一些
  • Pepper Robot:如何将 Python 地标检测移植到 Choregraphe?

    我正在尝试编写一个小程序 让 Pepper 通过 Choregraphe 检查房间内的地标 用于地标检测的常规 Python 代码工作得很好 但我无法将其移植到 Choregraphe http doc aldebaran com 2 5

随机推荐

  • 如何测试Nestjs拦截器?

    我找不到任何关于如何在 NestJS 中测试拦截器的解释 这个简单的示例拦截 POST 查询以将属性添加到正文中提供的示例模型中 Injectable export class SubscriberInterceptor implement
  • 我可以知道提交的修订号吗?

    我可以通过 svn info 等命令查看 svn 中的修订号 但在 git 中我只能看到 sha 对象名称 有什么方法可以知道已提交了多少修订 git 描述将是获取此类信息的最接近的方法 如本中所建议的其他问题 torvalds g5 gi
  • 无法使用 AVCaptureAudioDataOutputSampleDelegate 播放从语音录制的音频

    我已经用谷歌搜索和研究了好几天 但我似乎无法让它发挥作用 而且我在互联网上找不到任何解决方案 我正在尝试使用麦克风捕获我的声音 然后通过扬声器播放 这是我的代码 class ViewController UIViewController A
  • 您不应在 之外使用

    我正在尝试在示例应用程序中设置反应路由器 但出现以下错误 You should not use outside a
  • 时间:2019-05-17 标签:c#sqlwhattodispose

    我有下面的代码来从存储过程中查询记录 但担心我可能不会处理我需要的内容 或者无论如何在垃圾收集器不久之后清除该对象时正在处理 我是否需要处置 SqlDataReader 因为它位于 try catch 块内 我是否需要同时运行 cmd Di
  • Swift 中不同类型的多维数组

    当所有维度都具有相同类型时 我可以轻松地在 Swift 中编写多维数组 例如 var totalTime Int 如何使第一个维度为 String 第二个维度为 Int 我建议改用元组数组 你想要什么could可以使用 Any 类型的数组来
  • 如何寻找有用的红宝石

    有哪些寻找有用红宝石的好网站 敏捷网络开发列出插件 虽然不是 ruby gems 我不知道为什么 并允许人们对它们进行评分 红宝石工具箱按类别列出宝石并比较它们的受欢迎程度 Rubygems有一个搜索框 堆栈溢出对最有用的 Rails 插件
  • (重新)将 std::algorithms 与非标准容器一起使用

    我有一个 列 容器类型 struct MyColumnType Data Each row represents a member of an object vector
  • 如何向整数添加尾随零

    我有一个正整数变量 其值可以在 0 到 999 之间 然后将该整数传递给软件 要传递到该软件中 整数应始终为 3 位数字 但问题是 它应该有尾随零 例如 1 should be passed as 100 19 should be pass
  • 在 jPlayer 中使用来自 PHP 的 JSON 动态填充播放列表

    我有一个 PHP 可以在目录中创建 mp3 文件的 JSON 数组 PHP 的 JSON 数组输出为 title Kalimba mp3 path to mydirectory Kalimba mp3 title Maid with the
  • 在 SQL“IN”子句中使用元组

    我有一个包含字段 group id 和 group type 的表 我想查询该表中具有任何元组的所有记录 group id 团体类型 来自元组列表 例如 我希望能够执行以下操作 SELECT FROM mytable WHERE group
  • 学完基础PHP后做什么? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我已经学习了非常基本的 PHP 我认为是这样 琳达教程 在那之后 我觉得我对这种语言有了一定的掌握 我的志向是成为一名网络开发人员 经过一番谷歌搜索后 我计划通过使用 PHPSC
  • 如何在 Xamarin 中添加计时器?

    所以我需要一个计时器从 60 秒开始倒计时 我是 Xamarin 新手 不知道它接受什么 它将用于Android 关于如何开始有什么建议吗 你能用吗System Timers Timer 您可以使用 System Threading Tim
  • Python3 ImportError:没有名为“_tkinter”的模块[重复]

    这个问题在这里已经有答案了 在我的 Linux Mint 18 上 我尝试在 3 5 2 旁边安装 Python 3 6 1 使用这些命令 wget https www python org ftp python 3 6 1 Python
  • 在 JDK 9 上使用 Ignite

    我在 JDK 9 上使用 Ignite 时遇到问题 我有以下最小测试用例 package no ovstetun ignite import org apache ignite spi discovery tcp TcpDiscoveryS
  • 什么是 Jdbc 类型 5 驱动程序

    什么是 JDBC 类型 5 驱动程序 这样的司机有什么好处呢 我可以获得有关 5 类驱动程序的任何链接 教程吗 目前有四种类型的 JDBC 驱动程序 看 JDBC 技术驱动程序的类型 有一些猜测关于下一个类型会是什么样子
  • Swift 4 Codable - API 有时提供 Int,有时提供 String

    我现在正在运行 Codables 但 API 有一些字符串条目 有时可能有一个Int的价值0如果它们是空的 我在这里搜索并发现了这个 Swift 4 Codable Bool 或 String 值但我无法让它运行 我的结构 struct c
  • 优化易失性堆栈变量的存储/构造是否合法?

    我注意到 clang 和 gcc 优化了易失性的构造或分配struct在某些情况下 在堆栈上声明 例如 以下代码 struct nonvol2 uint32 t a b void volatile struct2 volatile nonv
  • 具有 NetTcpBinding 的 WCF 服务库

    我在 NetTcpBinding 方面遇到了困难 当我运行 WCF 服务时 我得到以下信息 System InvalidOperationException Could not find a base address that matche
  • KMeans 聚类后的聚类点 (scikit learn)

    我已经使用 sklearn 使用 Kmeans 完成了聚类 虽然它有一种打印质心的方法 但我发现 scikit learn 没有一种方法来打印每个簇的簇点 或者我到目前为止还没有看到它 这很奇怪 有没有一种巧妙的方法来获取每个簇的簇点 我目