谱聚类

2024-03-15

首先,我必须说我是 matlab (以及这个网站......)的新手,所以请原谅我的无知。

我正在尝试在 matlab 中编写一个函数,该函数将使用谱聚类将一组点分成两个簇。

我的代码如下

function Groups = TrySpectralClustering(data)
dist_mat = squareform(pdist(data));

W=  zeros(length(data),length(data));

for i=1:length(data),
    for j=(i+1):length(data),
    W(i,j)=10^(-dist_mat(i,j));
    W(j,i)=W(i,j);
    end
end
D = zeros(length(data),length(data));
for i=1:length(W),
D(i,i)=sum(W(i,:));
end
L=D-W;
L=D^(-0.5)*L*D^(-0.5);
[ V E ] = eig(L);
disp ('V:');
disp (V);

如果我理解正确,那么通过使用第二小的特征向量,我应该能够将数据划分为两个簇 - 如果第二个特征向量的第 i 个成员为正,则第 i 个数据点将位于一个簇中,否则它将在另一个集群中。

但是,当我尝试以下操作时

f=[1,1;0,0;1,0;0,1;100,100;100,101;101,101;101,100]
TrySpectralClustering(f)

我预计前四个点将形成一个簇,后四个点将形成另一个簇。

但是,我收到

V:
   -0.0000   -0.5000    0.0000   -0.5777    0.0000    0.4078   -0.0000    0.5000
   -0.0000   -0.5000    0.0000    0.5777    0.0000   -0.4078   -0.0000    0.5000
   -0.0000   -0.5000    0.0000    0.4078    0.0000    0.5777   -0.0000   -0.5000
   -0.0000   -0.5000    0.0000   -0.4078    0.0000   -0.5777   -0.0000   -0.5000
   -0.5000   -0.0000   -0.0000   -0.0000   -0.7071   -0.0000    0.5000   -0.0000
   -0.5000   -0.0000    0.7071    0.0000   -0.0000   -0.0000   -0.5000   -0.0000
   -0.5000    0.0000   -0.0000    0.0000    0.7071    0.0000    0.5000    0.0000
   -0.5000         0   -0.7071         0         0         0   -0.5000         0

取第二个特征向量

  -0.0000   -0.5000    0.0000    0.5777    0.0000   -0.4078   -0.0000    0.5000

我发现一个簇包含点 1,0;0,1;100,100;101,100 另一个簇由点 1,1;0,0;100,101;101,101 组成

我想知道我做错了什么。

注意:我正在将上述内容作为家庭作业项目的一部分进行。

提前致谢!


你得到的是正确的。令 U 为包含如上所示的特征向量的矩阵,并对其进行排列,使得第一列对应于最小特征值,渐进列对应于升序特征值。然后,通过保留与较小特征值相对应的特征向量来获取 U 的列子集。现在,按行将这些列读入一组新的向量,将其称为 Y。聚类 Y 以获得光谱聚类。因此,让我们假设我们的子集只是第一列。我们清楚地看到,如果你要对第一列进行聚类,你会将前 4 个放入一个簇中,将接下来的 4 个放入另一个簇中,这就是你想要的。

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

谱聚类 的相关文章

随机推荐

  • Python 什么时候重置线程计数?

    假设一个主程序创建 5 个线程 一次一个 main py import threading import time from camera import Camera this class inherits threading Thread
  • 如何配置链接服务器之间的身份验证?

    我正在尝试测试一个概念证明 即我可以在两个链接的 SQL Server 之间运行分布式事务 使用 sp addlinkedserver 进行链接 它们的名称是 Server1 和 Server2 两者都在默认实例下运行 每个服务器分别保存一
  • 如何在java中有效地使用cardlayout以便使用各种面板构造函数中的按钮从面板切换

    我是使用卡片布局的新手 我对如何实现它有一些疑问 我首先想知道实现卡片布局的最佳方法 以便我可以在面板之间切换 我的主要问题是如何使用面板构造函数内的按钮在面板之间切换 我今天刚刚开始从事这个项目 所以你会看到一些未完成或没有意义的代码 我
  • Pylint 对继承的嵌套类成员发出警告

    我们将一些特定的功能实现为 Python 类 以便继承它的开发人员可以轻松扩展 每个类都有一个带有项目列表的内部 Config 类 基类有一个空的 Config 类 每个继承类都在其中定义了一些项 然后每次使用 Config 子类的项时 p
  • 故事板对 cocoapods 故事板的引用似乎已损坏

    我有一个名为 ViewTester 的项目 其中链接了一个名为 blub 的 cocoapod Now in the main storyboard i want to reference blubstory storyboard like
  • C# Sql to Linq 检查多种情况

    如何在 Linq 中检查多个案例 对 多付 少付 中等支付 进行分类 Sql select id name salary case when salary lt 1500 then under paid when salary gt 350
  • 增强融合:奇怪的问题取决于向量上的元素数量

    我正在尝试在个人项目中使用 Boost Fusion Boost v1 42 0 我在这段代码中遇到了一个有趣的错误 include boost fusion include sequence hpp include boost fusio
  • 使用自定义广播接收器接收解析通知

    我在我的应用程序中使用解析通知 我正在使用 GcmBroadcastReceiver 接收通知警报 但我看到我的应用程序收到了很多通知 我想更新状态栏中的通知 所以我使用了自定义接收器 当通过 GcmBroadcastReceiver 接收
  • 智能卡项目中WIN32和x86的区别

    我有智能卡相关的项目 在智能卡领域x86和win32有什么区别 因为我必须在vc 中创建32位应用程序 那么什么解决方案平台 我应该选择MS Visual Studio 2008 x86 用于 Intel AMD 特定代码生成 而 Win3
  • 从 Visual Studio 交叉编译 ARM7 代码

    是否可以从 Visual Studio 2008 2010 Express 或 Professional 编译 ARM7 如果是这样 可以指导我如何做吗 我读过有关 Yagarto 工具链的其他帖子 这一切是如何融入图片中的 我在这个领域非
  • 使用 Ant 将 JaCoCo 集成到声纳中

    我陷入了使用 Ant 将 JaCoCo 与声纳集成的困境 对于这项任务非常陌生 并且是第一次集成 我浏览过很多链接 例如 https github com SonarSource sonar examples blob master pro
  • 面向初学者的关于如何编写 Windows GUI 程序的综合教程

    我正在尝试学习如何使用 Visual Studio 2008 用 C 编写 Windows GUI 程序 但我还没有找到适合初学者的更全面的教程 我发现的更全面的教程要么只是关于如何制作按钮 菜单等 要么只是关于如何编写基本的 C 控制台程
  • 将 Git 分支推送到远程而不检出分支

    有没有办法将分支推送到 Git 远程 而不先检查该分支 假设我在master分支上 并且有一个release分支我想推送到远程 有没有一种方法可以将release分支推送到Git远程而无需先检查它 尝试这个 git push u origi
  • Javascript 等待/异步功能 - 如果函数中没有等待字怎么办?

    我正在学习 Javascript ES2017 异步 等待功能 阅读了很多相关内容 并发现等待就像yield一样 允许我们等待承诺完成 From https javascript info async await https javascr
  • 如何为 Rails 3 中的自定义 Devise 控制器设置默认格式(例如 JSON)?

    我的 Rails 3 应用程序具有三个用于 Devise OmniAuth 集成的自定义控制器 我需要重写用户注册和会话的标准方法 例如 new 我特别需要控制器方法来处理与 JSON 格式兼容的重定向和响应 在我的routes rb 文件
  • 我可以在 /sdcard 上下载 SQLite 数据库并从我的 Android 应用程序访问它吗?

    我已经发现无法将文件捆绑在 apk 中并将它们放在 sdcard 上 迄今为止最好的选择是在首次运行时下载大文件 我看到一个教程 介绍如何将 sqlite 数据库与 apk 捆绑在一起 然后复制它 以便可以使用 SQLiteDatabase
  • 将两个 pandas DataFrame 合并到包含列表的单元格上

    我有两个 DataFrame 其中一个包含一列 其单元格内包含列表 这是一个例子 DF 1 A B 0 A A B 1 B B D 2 C D E F DF 2 C D 0 A X 1 B Y 2 C Z 这是设置 DataFrame 的代
  • Objective-C - 检测用户何时更改应用程序的通知设置

    我需要always了解用户在推送通知设置上选择哪些选项 选项有 警报 声音和徽章 因此 当我的应用程序启动时 我调用 UIRemoteNotificationType types UIApplication sharedApplicatio
  • 用于多语言 API 的 Doxygen

    我的公司开发了一个用于工程程序的 API 它是用 C 开发的 但我们为以下语言创建了包装器 类似于 VB 的专有语言 MATLAB 和Python 目前 文档是由一堆脚本生成的 要保持 100 的完整性开始变得非常耗时 我想知道是否有一种方
  • 谱聚类

    首先 我必须说我是 matlab 以及这个网站 的新手 所以请原谅我的无知 我正在尝试在 matlab 中编写一个函数 该函数将使用谱聚类将一组点分成两个簇 我的代码如下 function Groups TrySpectralCluster