一个简单谱聚类的例子

简介: 聚类是一种常见的无监督学习方法,目的在于从原始无标记数据中提取出分类标记。最简单的代表是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');

这里写图片描述

相关文章
|
SQL 存储 分布式计算
Spark Doris Connector设计方案
Spark Doris Connector 是Doris在0.12版本中推出的新功能。用户可以使用该功能,直接通过Spark对Doris中存储的数据进行读写,支持SQL、Dataframe、RDD等方式。从Doris角度看,将其数据引入Spark,可以使用Spark一系列丰富的生态产品,拓宽了产品的想象力,也使得Doris和其他数据源的联合查询成为可能。
1176 0
Spark Doris Connector设计方案
|
传感器 Web App开发 机器学习/深度学习
计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变
计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变
1375 0
计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变
|
Web App开发 JavaScript
vue-devtools 安装步骤
vue-devtools 安装步骤
vue-devtools 安装步骤
|
缓存 固态存储 算法
漫谈固态硬盘SSD全生命周期的质量管理
SSD质量的整体保证,需要从NAND颗粒、FW固件、SSD Qual质量、SSD运行质量完成全生命周期的端对端E2E质量管理。
|
安全 网络协议 网络安全
[ 虚拟专用网 ] IPsce 虚拟局域网(安全的IP协议的虚拟专用网)详解(一)
指采用 IPsce 协议来实现远程接入的一种VPN技术,IPSec全称为Internet Protocol Security,是由Internet Engineering Task Force (IETF) 定义的安全标准框架,在公网上为两个私有网络提供安全通信通道,通过加密通道保证连接的安全——在两个公共网关间提供私密数据封包服务 IPSEC是一套比较完整成体系的VPN技术,它规定了一系列的协议标准。
671 0
[ 虚拟专用网 ] IPsce 虚拟局域网(安全的IP协议的虚拟专用网)详解(一)
|
搜索推荐 新制造 决策智能
2022年中国研究生数学建模竞赛B题参考代码及思路-方形件组批优化问题
2022年中国研究生数学建模竞赛B题参考代码及思路-方形件组批优化问题
2022年中国研究生数学建模竞赛B题参考代码及思路-方形件组批优化问题
|
缓存 监控 机器人
利用itchat搭建微信机器人详解(附三个实用示例)(下)
2011年1月21日,微信推出第一个正式版本,到现在已有7个年头。从一开始的不被看到好,到现在的用户量超10亿,大众的日常生活越来越离不开微信。人生苦短我用Python,有没有办法通过Python来对我们使用微信提供一些便利呢? 答案肯定是有的,在Github上有一个基于微信网页版接口微信开源库:itchat,通过几十行的代码就能轻松实现一个微信机器人。本章我们就来了解学习这个库,然后通过三个实用案例来帮大家玩转这个库。
809 0
|
数据安全/隐私保护 Windows
Halcon软件的环境变量
Halcon软件的环境变量
790 0
|
云安全 SQL 运维
阿里云ACA典型试题
ACA考试名称为阿里云助理工程师认证ACA级别(Alibaba Cloud Certified Associate),是阿里云专业技术认证的其中一个分支。如果能拿到证书,起码去阿里面试也是一个有含金量的证书,所以老魏特意总结了一部分考题分享给大家,这个东西是要在有一定运维基础上,再去理解记忆的东西,实际上并不是很难。以下试题为阿里云ACA考试云安全内容典型试题。
1073 0
阿里云ACA典型试题
|
小程序 Ubuntu JavaScript
7.4【微信小程序全栈开发课程】小程序上线--基于Ubuntu搭建小程序运行环境
上一节我们安装了nginx和SSL证书,这一节继续来搭建小程序运行环境
569 0