一个简单谱聚类的例子

简介: 聚类是一种常见的无监督学习方法,目的在于从原始无标记数据中提取出分类标记。最简单的代表是K-means聚类,下面给出一个简单例子:n=300; c=3; t=randperm(n);x=[randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2; randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]'

聚类是一种常见的无监督学习方法,目的在于从原始无标记数据中提取出分类标记。最简单的代表是K-means聚类,下面给出一个简单例子:

n=300; c=3; t=randperm(n);
x=[randn(1,n/3)-2 randn(1,n/3) randn(1,n/3)+2;
    randn(1,n/3) randn(1,n/3)+4 randn(1,n/3)]';
m=x(t(1:c),:); x2=sum(x.^2,2); s0(1:c,1)=inf;

for o=1:1000
    m2=sum(m.^2,2);
    [d,y]=min(repmat(m2,1,n)+repmat(x2',c,1)-2*m*x');
    for t=1:c
        m(t,:)=mean(x(y==t,:));
        s(t,1)=mean(d(y==t));
    end
    if norm(s-s0)<0.001, break, end
    so=s;
end

figure(1); clf; hold on;
plot(x(y==1,1),x(y==1,2),'bo');
plot(x(y==2,1),x(y==2,2),'rx');
plot(x(y==3,1),x(y==3,2),'gv');

这里写图片描述
一般K-means聚类只能处理线性可分的聚类问题,因为它采用欧式距离作为分类依据。对于非线性问题,我们可以采用核映射方法,用样本的内积来代替欧式距离。然而这种方法的最终聚类结果强力依赖于初始值的选择,当由核函数决定的特征空间维度比较高的时候,这种依赖非常明显。对此,可以使用降维的方法解决该问题,这种方法被称为谱聚类

谱聚类的基本流程是在原始数据中利用局部保持投影法进行降维,然后直接运用K-means方法。下面给出一个简单的例子:

n=500; c=2; k=10;
t=randperm(n); a=linspace(0,2*pi,n/2)';
x=[a.*cos(a), a.*sin(a); (a+pi).*cos(a), (a+pi).*sin(a)];
x=x+rand(n,2); x=x-repmat(mean(x),[n,1]);
x2=sum(x.^2,2);
d=repmat(x2,1,n)+repmat(x2',n,1)-2*x*(x');
[p,i]=sort(d);
W=sparse(d<=ones(n,1)*p(k+1,:)); W=(W+W'~=0);
D=diag(sum(W,2));
L=D-W;
[z,v]=eigs(L,D,c-1,'sm');

m=z(t(1:c),:); z2=sum(z.^2,2); s0(1:c,1)=inf;

for o=1:1000
    m2=sum(m.^2,2);
    [u,y]=min(repmat(m2,1,n)+repmat(z2',c,1)-2*m*(z'));
    for t=1:c
        m(t,:)=mean(z(y==t,:));
        s(t,1)=mean(d(y==t));
    end
    if norm(s-s0)<0.001, break, end
    so=s;
end

figure(1); clf; hold on; axis([-10 10 -10 10])
plot(x(y==1,1),x(y==1,2),'bo');
plot(x(y==2,1),x(y==2,2),'rx');

这里写图片描述

相关文章
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
461 0
|
3月前
|
Kubernetes 供应链 安全
云原生环境下的容器安全与最佳实践
云原生时代,容器与 Kubernetes 成为企业应用核心基础设施,但安全挑战日益突出。本文探讨容器安全现状与对策,涵盖镜像安全、运行时防护、编排系统风险及供应链安全,提出最小权限、漏洞扫描、网络控制等最佳实践,并结合阿里云 ACK、ACR 等服务提供全链路解决方案,展望零信任、AI 安全与 DevSecOps 融合趋势。
150 5
|
8月前
|
运维 监控 数据可视化
从告警到巡检,YashanDB Cloud Manager 帮我省下一半运维时间
数据库运维常依赖人工操作,易引发业务问题。YashanDB Cloud Manager(YCM)改变这一现状:可视化实例管理、全栈资源监控、智能巡检、灵活告警、高可用保障、权限审计体系,助企业降低故障影响、提升DBA效率、强化安全合规、标准化运维流程。若你被数据库运维困扰,可尝试此国产平台。
|
8月前
|
存储 Java 开发者
Java 中的 equals 方法:看似简单,实则深藏玄机
本文深入探讨了Java中`equals`方法的设计与实现。默认情况下,`equals`仅比较对象引用是否相同。以`String`类为例,其重写了`equals`方法,通过引用判断、类型检查、长度对比及字符逐一比对,确保内容相等的逻辑。文章还强调了`equals`方法需遵循的五大原则(自反性、对称性等),以及与`hashCode`的关系,避免集合操作中的潜在问题。最后,对比了`instanceof`和`getClass()`在类型判断中的优劣,并总结了正确重写`equals`方法的重要性,帮助开发者提升代码质量。
626 1
|
9月前
|
运维 供应链 数据可视化
基于开源软件的场景式教学:高职院校培养学生创新能力的新模式
在数字化转型与产教融合背景下,高职教育正从“知识传授”向“能力塑造”转变。开源软件以其开放性、灵活性和低成本特性,成为推动场景式教学的重要工具。本文探讨了通过开源软件构建沉浸式、项目驱动的教学模式,分析其技术路径与价值。例如,Websoft9等平台提供预置模板和“开箱即用”功能,助力学生快速进入实践阶段。结合虚拟仿真技术与AIGC,教学突破传统限制,培养跨学科创新思维。案例显示,该模式显著提升学生创新能力与就业竞争力。未来需深化“开源工具+产业标准”资源库建设,推动校企共建开源社区,强化教师技术整合能力,为创新型人才培养注入持续动力。
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
BioMedGPT-R1:生物医药ChatGPT诞生!蒸馏DeepSeek R1突破人类专家水平,分子解析+靶点预测一键搞定
BioMedGPT-R1 是清华大学与水木分子联合开发的多模态生物医药大模型,支持跨模态问答、药物分子理解与靶点挖掘,性能显著提升。
630 5
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
2024年11月29日,阿里云在上海举办金融量化策略回测Workshop,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。活动特别设计了动手实践环节,帮助参会者亲身体验阿里云产品功能,涵盖EHPC量化回测和Argo Workflows量化回测两大主题,旨在提升量化投研效率与安全性。
云上金融量化策略回测方案与最佳实践
|
人工智能 自然语言处理 搜索推荐
通义灵码:AI辅助开发工具的新范式
在大模型时代,阿里云的通义灵码作为AI辅助开发工具,通过提高开发效率、简化协作和降低成本,重塑了软件开发的核心要素。通义灵码基于大模型和自然语言处理技术,实时辅助代码编写、调试和优化,提供个性化支持,显著提升了开发体验。未来,AI将在软件开发中发挥更大作用,通义灵码将继续引领这一变革。
450 0
通义灵码:AI辅助开发工具的新范式
|
机器学习/深度学习 人工智能 算法
机器学习【教育领域及其平台搭建】
机器学习【教育领域及其平台搭建】
393 6
|
SQL XML 存储
Java 嵌入数据处理引擎:SQLite 的挑战者 esProc SPL
SQLite可以方便地嵌入Java,但数据源加载繁琐,计算能力不足,无法独立完成业务逻辑,架构上弱点颇多。SPL也很容易嵌入Java,且直接支持更多数据源,计算能力更强,流程处理方便,可独立实现业务逻辑。SPL还提供了多种优化体系结构的手段,代码既可外置也可内置于Java,支持解释执行和热切换,可进行高性能内存计算。
1178 0
Java 嵌入数据处理引擎:SQLite 的挑战者 esProc SPL