zoukankan      html  css  js  c++  java
  • K-means聚类算法

    1. K-means聚类算法简介

      采用的是将N*P的矩阵 X 划分为K个类,使得类内对象之间的距离最大,而类之间的距离最小。

    2. 伪代码

    输入:训练样本 x = {x1;x2;x3;......xm} (其中x为m-by-n矩阵,包含m个样本点,每个样本点n个特征)

       聚类簇数 k(为一标量scalar)

    聚类过程:从x中随机选取k个样本顶啊作为初始聚类中心,k = {k1,k2,k3,......kk}.

         Repeat:

            % (1). 划分样本到特定的簇中

            for j = 1,2,3,......n do    

              计算样本xj与各聚类中心 k 的距离;

              将该样本划进与其最近的样本中心 ki 所在的簇中。

            end for

            % (2). 更新聚类中心

            for i = 1,2,3,......k do

              计算新的聚类中心 k‘ = {k1',k2',k3',......kk'};

            end for

         until 所有的聚类中心不再变化,或者说聚类结果不再变化

    3. 优化目标

         

     4. 示例代码

    % 输入 X 待聚类样本点,为 m - by - n 矩阵,包含m个样本点,每个样本点包含n个特征
    % 输如 K 为用户自定义的所需划分的簇数,为一个标量
    
    idx=Kmeans(X,K)
    [idx,C]=Kmeans(X,K) 
    [idx,C,sumD]=Kmeans(X,K) 
    [idx,C,sumD,D]=Kmeans(X,K) 
    […]=Kmeans(…,’Param1’,Val1,’Param2’,Val2,…)
    
    % 输出 idx 为 m - by - 1列向量,记录每个样本点所属的簇
    % 输出 C 为 K - by - n 矩阵,记录最终各簇的聚类中心
    % 输出 sumD 为K - by -1的和向量,存储的是类间所有点与该类质心点距离之和
    % 输出 D 为 m - by - K 矩阵,存储每个样本点与各个聚类中心的距离
    
    
    […]=Kmeans(…,'Param1',Val1,'Param2',Val2,…)
    这其中的参数Param1、Param2等,主要可以设置为如下:
    
    1. ‘Distance’(距离测度)
    ‘sqEuclidean’ 欧式距离(默认时,采用此距离方式)
    ‘cityblock’ 绝度误差和,又称:L1
    ‘cosine’ 针对向量
    ‘correlation’  针对有时序关系的值
    ‘Hamming’ 只针对二进制数据
    
    2. ‘Start’(初始质心位置选择方法)
    ‘sample’ 从X中随机选取K个质心点
    ‘uniform’ 根据X的分布范围均匀的随机生成K个质心
    ‘cluster’ 初始聚类阶段随机选择10%的X的子样本(此方法初始使用’sample’方法)
    matrix 提供一K*P的矩阵,作为初始质心位置集合
    
    3. ‘Replicates’(聚类重复次数)  整数
  • 相关阅读:
    Vector3函数理解-计算两向量之间的角度
    Android报错Type Error executing aapt: Return code -1
    android中 onResume()方法什么时候执行 ??(转)
    自行实现Kinect 手势Demo踩的坑
    Kinect 2.0 默认姿势的中文意思
    C#限制float有两位小数
    Android View 从左边滑出动画 ,以及从左上,左下,右上,右下放大动画。
    注册谷歌账户时最后一步验证账户输入手机号说此电话号码无法用于进行验证,如何解决?
    Mac使用sonarqube进行代码检测
    Unable to find method 'org.gradle.api.tasks.TaskInputs.file
  • 原文地址:https://www.cnblogs.com/carreyBlog/p/11979329.html
Copyright © 2011-2022 走看看