- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
首先我必须说我是 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 列放入另一个簇中,这就是您想要的。
关于matlab - 光谱聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480635/
使用 Redshift 光谱时,您似乎只能导入提供位置直到文件夹的数据,并且导入文件夹内的所有文件。 有没有办法从包含多个文件的文件夹中导入仅导入一个文件。当提供带有 filename 的完整路径时,
我正在评估 Athena 和 Redshift Spectrum。两者都有相同的目的,Spectrum 需要一个 Redshift 集群,而 Athena 是纯粹的无服务器集群。 Athena 使用
我们目前生成每日 CSV 导出,并将其上传到 S3 存储桶,结构如下: |--reportDate- |-- part0.csv.gz |-- part1.csv.gz 我们希望能够
我在 S3 中有一个 JSON 结构数组,它已被 Glue 成功抓取和编目。 [{"key":"value"}, {"key":"value"}] 我正在使用自定义分类器: $[*] 然而,当尝试从
我是一名优秀的程序员,十分优秀!