如何将聚类标签与 Matlab 中的“真实值”标签相匹配

2024-02-08

我在这里搜索并用谷歌搜索,但没有结果。在 Weka 中进行聚类时,有一个方便的选项,即类到聚类,它与算法生成的聚类相匹配,例如简单的 k-means,到您作为类属性提供的“基本事实”类标签。这样我们就可以看到聚类准确率(错误百分比)。

现在,我怎样才能在Matlab中实现这一点,即翻译我的clusterClasses向量例如[1, 1, 2, 1, 3, 2, 3, 1, 1, 1]与提供的地面实况标签向量相同的索引,例如[2, 2, 2, 3, 1, 3]?

我认为它可能是基于聚类中心和标签中心,但我不知道如何实现!

任何帮助将不胜感激。

Vincent


几个月前,我在进行聚类时偶然发现了类似的问题。我没有很长时间地搜索内置解决方案(尽管我确信它们一定存在),最终编写了我自己的小脚本,以将我找到的标签与事实真相进行最佳匹配。该代码非常粗糙,但它应该可以帮助您入门。

它基于尝试所有可能的标签重新排列,以查看最适合真相向量的内容。这意味着给定聚类结果yte = [3 3 2 1]与基本事实y = [1 1 2 3],脚本将尝试匹配[3 3 2 1], [3 3 1 2], [2 2 3 1], [2 2 1 3], [1 1 2 3] and [1 1 3 2] with y找到最佳匹配。

这是基于使用内置脚本perms()女巫无法处理超过 10 个独特的簇。对于 7-10 个独特的簇,代码也可能会很慢,因为复杂性会随着阶乘的增长而增长。

function [accuracy, true_labels, CM] = calculateAccuracy(yte, y)
%# Function for calculating clustering accuray and matching found 
%# labels with true labels. Assumes yte and y both are Nx1 vectors with
%# clustering labels. Does not support fuzzy clustering.
%#
%# Algorithm is based on trying out all reorderings of cluster labels, 
%# e.g. if yte = [1 2 2], try [1 2 2] and [2 1 1] so see witch fit 
%# the truth vector the best. Since this approach makes use of perms(),
%# the code will not run for unique(yte) greater than 10, and it will slow
%# down significantly for number of clusters greater than 7.
%#
%# Input:
%#   yte - result from clustering (y-test)
%#   y   - truth vector
%#
%# Output:
%#   accuracy    -   Overall accuracy for entire clustering (OA). For
%#                   overall error, use OE = 1 - OA.
%#   true_labels -   Vector giving the label rearangement witch best 
%#                   match the truth vector (y).
%#   CM          -   Confusion matrix. If unique(yte) = 4, produce a
%#                   4x4 matrix of the number of different errors and  
%#                   correct clusterings done.

N = length(y);

cluster_names = unique(yte);
accuracy = 0;
maxInd = 1;

perm = perms(unique(y));
[pN pM] = size(perm);

true_labels = y;

for i=1:pN
    flipped_labels = zeros(1,N);
    for cl = 1 : pM
        flipped_labels(yte==cluster_names(cl)) = perm(i,cl);
    end

    testAcc = sum(flipped_labels == y')/N;
    if testAcc > accuracy
        accuracy = testAcc;
        maxInd = i;
        true_labels = flipped_labels;
    end

end

CM = zeros(pM,pM);
for rc = 1 : pM
    for cc = 1 : pM
        CM(rc,cc) = sum( ((y'==rc) .* (true_labels==cc)) );
    end
end

例子:

[acc newLabels CM] = calculateAccuracy([3 2 2 1 2 3]',[1 2 2 3 3 3]')

acc =

0.6667


newLabels =

 1     2     2     3     2     1


CM =

 1     0     0
 0     2     0
 1     1     1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将聚类标签与 Matlab 中的“真实值”标签相匹配 的相关文章

  • 当我在 MATLAB 中循环绘图时如何给出不同的颜色?

    我有一些数据说 X 的大小为 100 2 该 X 由 10 个类别的数据组成 一组 10 个 现在我想查看每个类别的数据模式 为此 我需要为每个类别分配不同的颜色 我正在尝试循环而不是绘制 10 个不同的图 我尝试了以下 hold on f
  • 复制 Photoshop sRGB 到 LAB 转换

    我想要实现的任务是复制 Photoshop RGB 到 LAB 的转换 为简单起见 我将描述我如何仅提取 L 通道 提取 Photoshop 的 L 通道 这是 RGB 图像 其中包括所有 RGB 颜色 请点击下载 为了提取 Photosh
  • MATLAB 写入多页 tiff 指数慢

    我正在尝试编写一个多页 tiff 文件 该文件是 128 像素 x 128 像素 x 122000 帧的 16 位无符号整数 ImageJ 或简短的 Python 脚本可以在快速机器上在一分钟内完成此操作 在同一台机器上 无论使用我尝试过的
  • Matlab cellfun 上的函数 strfind

    我想用cellfun功能于strfind函数在另一个字符串元胞数组中查找字符串元胞数组中每个字符串的索引 以将它们排除在外 strings aaa bbb ccc ddd eee fff ggg hhh iii jjj excludedSt
  • 用正确的组号标记 R 树状图分支

    我正在尝试绘制树状图 以便分支上的标签与聚类分析中的组号相匹配 目前 分支只是按照它们出现的顺序从左到右标记 而不是实际的组号 这是我当前的 R 代码和生成的树状图 dst lt dist Model Results method bina
  • 在 GUI MATLAB 中为静态文本赋值

    如何在 MATLAB GUI 中为静态文本赋值 双击指南中的文本打开属性编辑器 然后编辑 String 财产 您还可以设置 Tag 属性 以便您可以在 GUI 运行时对其进行编辑 如果您将标签设置为mytext 您可以将静态文本更改为 My
  • 改变眼睛图像中特定区域的颜色[Matlab]

    I am trying to change the pupil of the following image This is not a feature extraction or eye detection task I want to
  • 在 GUI 内的子图中添加滚动条

    如何向子图添加滚动条 我已经阅读了很多教程 但它们似乎很难理解 例如 滚动图形演示 http www mathworks com matlabcentral fileexchange 5253 scrolling figure demo 有
  • 分割车牌字符

    我在从车牌图像中分割字符时遇到问题 我应用了以下方法来提取车牌字符 车牌图像的自适应阈值 选择具有特定纵横比的轮廓 如果车牌图像中有任何阴影 如附件中所示 由于二值化不正确 我无法正确分割字符 图像中的阴影合并图像中的相邻字符 我已经对具有
  • 如何去掉 Matlab 单元格中的双引号?

    我在 Matlab 中有一个单元格数组 单元格中的所有元素都表示为 something 我怎样才能创建一个数组 something 这里有两个解决方案 strrep删除所有双引号实例 同时regexprep只删除字符串开头和结尾的双引号 感
  • 隐藏图中某些图形对象的 MATLAB 图例条目

    MATLAB 图例列出了绘图中的所有内容 包括您在绘图上放置的指南 绕过这个问题的软糖就是要做的 Plot Add legend Add guidelines 然而 MATLAB 将最新的行放在前面 这意味着指南将位于显示的数据之上 丑陋且
  • 将数据库导入 MATLAB 错误

    我正在尝试将表导入到我的 MATLAB 工作区 但它一直向我抛出错误 Undefined function or method fetch for input arguments of type struct 这是我尝试执行的代码 dyn
  • ND 输入的 im2col 算法

    我正在尝试为输入维度 gt 2D 编写自己的 im2col 算法 目前我正在研究 Matlab im2col 的实现 但是 我找不到任何有关二维以上输入的情况的文档 如果我将 3D 张量输入到函数中 我确实会得到输出 不过我不太明白你是如何
  • 如何在不使用 MATLAB 的情况下打开 .mat 文件?

    我在Matlab中做了一个项目 现在我已经卸载了Matlab 现在 我需要一些我的项目的参考 我留下了所有 mat 文件 我正在尝试在记事本中打开它们 并且我在那里得到了 unicode 字符 我的问题很简单 如何在记事本或某些文字处理器中
  • DYMOLA:opc 服务器如何使用 MATLAB 使用 dsin.txt 或 mat 文件进行初始化

    我在 DYMOLA 中创建了一个 OPC 服务器 现在我在 DYMOSIM 中有这个可以单击并初始化 使用 dsin txt 的 MAT 文件 现在我在 MATLAB 中创建了一个 GUI 文件 并获取变量的输入并创建了一个 mat 文件
  • 使用 MAT2CELL 的 MATLAB

    我有以下矩阵 letter A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h ii jj k l m o p q r s t u v w x y z nu
  • R和matlab中的qr函数

    我有一个关于将 matlab 函数转换为 R 的问题 我希望有人能提供帮助 matlab 和 R 中使用的标准 QR 分解称为 qr 据我了解 用两种语言执行 qr 分解的标准方法是 Matlab Q R qr A 满足QR A R z l
  • 当 MATLAB 发生错误时如何继续循环?

    我正在使用函数将一些 dat 文件转换为 mat 文件 我在循环内调用此函数来转换多个文件 在某些情况下 我的 dat 文件已损坏 函数无法转换并发生错误 从而停止循环 现在我的问题是 是否有任何命令 当错误发生时 它应该跳过循环中的当前
  • 梯度下降Matlab实现

    我已经浏览了堆栈溢出中的许多代码 并在同一行上编写了自己的代码 这段代码有一些问题我无法理解 我正在存储值 theta1 和 theta 2 以及用于分析目的的成本函数 x 和 Y 的数据可以从此下载页 它具有 dat 文件形式的 x 和
  • MATLAB 引擎函数的输入参数

    我正在尝试使用 MATLAB 引擎在 Python 中调用 MATLAB 函数 但遇到一些问题 在设法将 NumPy 数组作为函数的输入处理后 现在 MATLAB 出现一些错误 MatlabExecutionError 未定义输入函数 si

随机推荐

  • 将现有 pdf 添加到 fpdf

    有没有我可以调用的函数 以便将现有的 pdf 包含在我的fpdf file 例如 pdf gt AddPage from file example pdf 类似的东西 是否可以 fpdi 就是您正在寻找的 请参阅http www setas
  • CSS滚动条样式跨浏览器[重复]

    这个问题在这里已经有答案了 如何定义跨浏览器的 CSS 滚动条样式 我测试了这段代码 它只在 IE 和 Opera 中有效 但在 Chrome Safari 和 Firefox 中失败
  • 使用动态列和列名称进行逆透视

    我正在尝试取消透视具有大量列的表 其格式为 PID UID col1 col2 col3 下面的动态 SQL 将为我提供除列名之外的几乎所有内容 目标是使用逆透视值源自的列的名称填充 ID 字段 Build list of cols we
  • 在datagridview中如何使用复选框作为单选按钮?

    IDE Visual Studio c Winforms 应用程序 我投入了大约12个小时 但没有取得成功 作为DataGridView不提供单选按钮类型的单元格 所以我尝试使用复选框单元格作为单选按钮功能 即我只想选中一列中的一个复选框
  • 在 C# 中使用 XDocument 创建 XML 文件

    我有一个List
  • 无需登录即可在系统启动时启动应用程序

    我们有一个新的服务器正在运行 并且我们有一些新的程序执行导入例程 到目前为止一切顺利 但是有一个程序被放入自动启动文件夹 So 在管理员登录之前它不会运行 如果我们注销它就会停止 我想将其放入一个单独的会话中 这样它就可以在没有任何交互的情
  • 在弹性搜索中索引包含数学表达式的文档的最佳方法是什么?

    我试图解决的问题是我有一堆与数学表达式 公式相关的文档 我想通过公式或表达式搜索文档 到目前为止 根据我的研究 我正在考虑将数学表达式转换为乳胶格式并作为字符串存储在数据库中 弹性搜索 通过这种方法 我可以搜索带有乳胶字符串的文档吗 a2
  • 想知道 libusb_bulk_transfer 错误代码

    libusb open device deviceHandle 返回 0 but libusb bulk transfer deviceHandle 0x81 data1 512 len 0 返回 5 所以我尝试找出错误code 5 usi
  • IE替代window.stop()(取消所有挂起的请求)

    我正在寻找 IE 的 window stop 的替代方案 我尝试过 document execCommand Stop 但它似乎不起作用 我试图取消从我正在使用的 ASP 用户控件中调用的 XMLHttpRequest 我无法使用 jQue
  • 致命:无法访问私钥文件“/etc/ssl/private/ssl-cert-snakeoil.key”:权限被拒绝

    我相信我最终混淆了 etc ssl 目录树的权限 因为最后一次修改是在 11 月 18 日以及我无法让 PostgreSQL 工作的第二天进行的 当我输入时 sudo 服务 postgresql 启动 I get 致命 无法访问私钥文件 e
  • Android:在嵌套在垂直线性布局中的水平线性布局中的文本视图之间放置垂直分隔线/分隔线?

    对于 android 内容视图 我有一个垂直线性布局 其中有一些文本视图 其中有一些线来划分和分隔垂直元素 这工作正常 xml 如下
  • celerybeat相对于cron有什么优势?

    我看到很多人更喜欢 celerybeat 而不是 cron jobs 来执行定期任务 我看到了 celerybeat 的文档 并且可以看到有关如何使用它的信息 但没有看到为什么 或何时 我应该更喜欢它而不是 cronjobs http do
  • html 中如何使用 iframe?

    什么是 iframe 它在 html 中如何使用 iframe 是一个允许您在 HTML 页面中嵌入外部内容的对象 您可以使用它来显示其他网页 文档 例如 PDF 等 尽管对于复杂的媒体类型 您可能想尝试使用对象标签 您可以将 iframe
  • 仅使用 Flutter 在本地环境中托管 Web 服务器

    是否可以使用基于 Flutter 桌面的应用程序在本地环境中托管 Flutter Web 应用程序 在谷歌上搜索这样的解决方案可能很困难 因为它涉及许多导致类似情况的关键字 当您需要本地解决方案时需要在线托管 仅命令行解决方案等 经过一番挖
  • 如何访问通讯录中当前用户的记录?

    地址簿 API 中有没有办法以编程方式访问当前用户的记录 也就是说 如果这部iPhone是John Smith的 那么要获取John Smith的联系人记录 以通讯录中标记为 我 的记录为准 显然 您可以弹出选择器并让用户从其联系人中选择自
  • 使用数据库表作为 JMeter 的 CSV 数据集

    我目前正在使用 JMeter 对我公司的一个应用程序进行性能测试 该应用程序需要登录 我必须使用多个用户 在 JMeter 中通常完成此操作的方式似乎是通过 CSV 数据集 但是我可以访问数据库并可以直接从那里读取所有凭据 由于这是一个测试
  • jQuery - 选择输入字段的关联标签元素[重复]

    这个问题在这里已经有答案了 我有一组输入字段 其中一些具有关联的标签 有些没有
  • 如何减小 SSRS PDF 导出大小

    我有一份导出为 PDF 的 SSRS 报告 该报告有一张表 其中有 2 行 没有格式的标题和一条记录 创建的 PDF 导出大小为 130K 我确信这比它需要的要大得多 有什么方法可以减小 SSRS 创建的 PDF 的大小吗 或者我应该注意任
  • 如何在 iPhone/Objective C 上找出 RSA 公钥的模数和指数

    有没有可能的方法来找出使用 SecKeyGeneratePair 一般的安全框架 创建的公钥的模数和指数 我对此很困惑 但这是我找到的解决方案 不使用任何外部包 首先 转到 Apple 的 CryptoExercise 示例 从那里下载 S
  • 如何将聚类标签与 Matlab 中的“真实值”标签相匹配

    我在这里搜索并用谷歌搜索 但没有结果 在 Weka 中进行聚类时 有一个方便的选项 即类到聚类 它与算法生成的聚类相匹配 例如简单的 k means 到您作为类属性提供的 基本事实 类标签 这样我们就可以看到聚类准确率 错误百分比 现在 我