精华内容
下载资源
问答
  • 怎样用matlab实现多维K-means聚类算法小编觉得一个好的周末应该是这样的:睡到中午醒来,在床上躺着玩两个小时...怎样用matlab实现多维k-means聚类算法function [ labels ] = kmeans_clustering( data, k ) [num,~]...

    怎样用matlab实现多维K-means聚类算法小编觉得一个好的周末应该是这样的:睡到中午醒来,在床上躺着玩两个小时手机,起床随便吃点东西,下午去超市买一大堆零食,五六点的时候去约小伙伴们吃火锅烧烤,如果是一个人的话就去吃炸鸡,看电影。

    怎样用matlab实现多维k-means聚类算法

    function [ labels ] = kmeans_clustering( data, k ) [num,~]=size(data); ind = randperm(num); ind = ind(1:k); centers = data(ind,:); d=inf; labels = nan(num,1); while d>0 labels0 = labels; dist = pdist2(data, centers); [~,labels]小编不敢说自己一生都会喜欢你,但至少在能看见你的岁月里只想对你一个人好。

    1e9eada21267e1de1766ebec5772fe0e.png

    如何编写分享K-均值聚类算法的Matlab程序?喜欢,努力却无玩耍则心生疲惫,身累。喜欢,玩耍却不努力则无长进,心累。努力的玩耍而不喜爱则属应酬,身心俱累。

    在聚类分析中,K-均值聚类算法(k-means algorithm)是无监督分类中的一种基本方法,其也称为C-均值算法,其基本思想是:通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。假设要把样本集分为c个类别。

    如何对点进行k均值聚类算法 matlab

    在聚类分析中,K-均值聚类算法(k-means algorithm)是无监督分类中的一种基本方法,其也称为C-均值算法,其基本思想是:通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果.\x0d假设要把样本集分为c个类别,算法如下:\x0d(1)适当选当一个人不再对一个人畅所欲言时,很多时候是心远了,当一个人学会默默承担时,很多时候是心凉了……

    急分享。。。matlab的K-均值聚类算法程序,采用下面采用下面的数据进行聚类分析: x1 x2 -0.5200 1.8539 2.5849 2.2481 0.9调用kmeans函数自甘堕落的人根本不值得别人可怜,越是没有人爱,就越要爱自己.

    matlab实现怎么kmeans算法总有一天你恍然大悟,父母是你花心思,花时间最少,却最爱你的人。

    利用kmeans算法对矩阵进行聚类,各个矩阵维数一样,使用1范数(两矩阵差小编开始喜欢最初的自己,那时候没有伤,不会哭泣。

    分享自适应k均值聚类算法 matlab

    function group=Kmeans(k,mid) %K均值聚类算法 person=load('sample.txt','height','weight');%从文本文件读入数据放入person结构体中 % person=person(1:10,:); num=size(person,1);%获得person结构体大小 for i=1:k%赋初始值,划分为k类。

    如何将k-means算法与de算法结合用matlab实现

    data=input('请输入样本数据矩阵:'); m=size(data,1); n=size(data,2); counter=0; k=input('请输入聚类数目:'); whilek>m disp('您输入的聚类数目过大,请输入正确的 k 值'); k=input('请输入聚类数目:'); end if k==1 disp('聚类数目不能为有一种默默的爱,叫放弃,轻轻地叹息,为了爱而离开。

    matlab 聚类算法silhouette小编不是那种几个飞吻就能打发的人,有本事你真亲过来呀。

    展开全文
  • K-means算法是很典型的基于距离的聚类算法,k-medoids聚类算法同样有效
  • Kmeans聚类算法详解与实现,Kmeans算法的MATLAB实现、python实现源代码都有。附有算法原理的解析。 对应的博客地址:http://blog.csdn.net/zengxiantao1994/article/details/73441922
  • matlab均值聚类的基本代码,代码参考自周志华《机器学习》9.4.1节而写的,代码使用matlab矩阵序列化操作,速度会快一点,本代码仅供参考,请尊重原创
  • kmeans聚类算法MATLAB实现

    万次阅读 2018-03-13 18:59:29
    kmeans算法就是要将这个集合分成k类,每一类有一个中心,其中k的大小是人为设置的。 kmeans工作流程如下: 1. 随意选k个点作为每个类初始的中心点 2. 遍历每一个点i,分别计算点i到这k个点的距离,离哪一个点...

    原理 :

    一个含n个元素的集合D:{x1, x2, …, xn},其中xi = (xi1,xi2,…,xir),即表示每个元素有r个属性(纬度)。kmeans算法就是要将这个集合分成k类,每一类有一个中心,其中k的大小是人为设置的。
    kmeans工作流程如下:

    1. 随意选k个点作为每个类初始的中心点
    2. 遍历每一个点i,分别计算点i到这k个点的距离,离哪一个点最近就将点i划分成哪一类
    3. 所有的点都划分完后,求每一类所有点的平均值,作为该类新的中心点
    4. 然后重复2,3直到中心点不在变化,或者重复2,3到一定次数

    优缺点:

    优点:简单,高效
    缺点:需要人为设置聚类的个数;对一些不规则的分布聚类效果很差;对异常值十分敏感,如下图:
    这里写图片描述

    MATLAB实现

    链接:https://pan.baidu.com/s/12yO8u1seqvsF5NHd0XwUvA
    提取码:o9wm
    代码:

    [b] = xlsread('aggregate.xlsx',1,'A1:c788');
    x = b(:,1);
    y = b(:,2);
    %c = b(:,3);
    
    data = [x(1:7,1),y(1:7,1)];
    %用于记录点到样本的距离
    dist = zeros(1,7);
    for k = 1:300
    %用来记录点被分到那个类中
    c = zeros(788,1);
    sum = zeros(7,3);
    for i = 1:788
        for j = 1:7
            dist(1,j) = sqrt((x(i,1)-data(j,1))^2+(y(i,1)-data(j,2))^2);
        end
        [mi,index]=min(dist);
        c(i,1) = index;
        sum(c(i,1),1)=x(i)+sum(c(i,1),1);
        sum(c(i,1),2)=y(i)+sum(c(i,1),2);
        sum(c(i,1),3)=sum(c(i,1),3)+1;
    end
    %重新计算均值
    for m = 1:7
        data(m,1) = sum(m,1)/sum(m,3);
        data(m,2) = sum(m,2)/sum(m,3);
    end
    end
    %画图
    for i = 1:788
        rand('seed',c(i,1));
        color = rand(1,3);
        plot(x(i,1),y(i,1),'*','color',color);
        hold on;
    end    
    

    这里写图片描述

    展开全文
  • K-means聚类算法利用matlab实现,可以查看每次迭代的效果
  • matlab kmeans聚类,里面包括代码和例子以及聚类后的图片
  • matlab实现kmeans聚类算法

    千次阅读 2019-09-06 13:26:27
    kmeans聚类算法是一种简单实用的聚类算法,matlab自带函数kmeans可直接对数据进行kmeans聚类。为了方便更好地掌握kmeans聚类算法,今天我们自己来实现一个弱化的版本mykmeans。 mykmeans输入包含三项,分别为聚类所...

    kmeans聚类算法是一种简单实用的聚类算法,matlab自带函数kmeans可直接对数据进行kmeans聚类。为了方便更好地掌握kmeans聚类算法,今天我们自己来实现一个弱化的版本mykmeans。

    mykmeans输入包含三项,分别为聚类所使用的数据data,data每一行代表一个样本,每一列代表一个特征;聚类中心数量numclass;第三项为所使用的距离的定义,默认情况下为欧式距离。

    function [cluster,clusterhistory]=mykmeans(data,numclass,varargin)
    % kmeans聚类。
    % 聚类过程动画显示
    % INPUTS:
    % data:每一行代表一个样本,每一列代表一个特征
    % numclass:聚类中心的数量
    % varargin{1}: 距离定义。支持euclidean(默认)、hamming
    % OUTPUT:
    % cluster: numsample行的列向量,代表每个样本的分类归属
    % clusterhistory{i}.cluster第i次迭代的聚类
    % clusterhistory{i}.core第i次迭代的聚类中心
    %
    % 公众号【数学建模公会】,HCLO4,20190902
    
    if nargin==2
        method='euclidean';
    else
        method=varargin{1};
    end
    % 初始化聚类中心坐标,在数据点中随机选择numclass个点作为初始聚类中心。
    numsample=size(data,1);
    temp=randperm(numsample);
    core=data(temp(1:numclass),:);
    dis=caldis(data,core,method); %存储每个样本到当前聚类中心的距离
    
    
    % 执行迭代过程
    maxIter=20; % 最大迭代次数
    numiter=1;
    clusterhistory=cell(1,maxIter);
    while 1
        
        newcore=zeros(size(core));
        % 迭代聚类中心
        [~,ind]=min(dis,[],2); %计算每个sample归属于哪个聚类中心,如果某个聚类中心没有一个点?
        for i=1:numclass
            newcore(i,:)=mean(dis(ind==i,:));
        end
        clusterhistory{numiter}.cluster=ind;
        clusterhistory{numiter}.core=core;
        
        if all(newcore(:)==core(:))||numiter>=maxIter  % 迭代终止条件,聚类中心不再改变
            cluster=ind;
            break
        end
        
        core=newcore;
        dis=caldis(data,core,method); 
        
        numiter=numiter+1;
        
    end
        
    
    clusterhistory=clusterhistory(1:numiter);
    
    
    end % mykmeans
    
    
    
    function dis=caldis(data,core,method)
    %计算每个样本到当前聚类中心的距离
    numsample=size(data,1);
    numclass=size(core,1);
    dis=zeros(numsample,numclass);
    switch method
        case 'euclidean'
            for i=1:numclass
                dis(:,i)=sqrt(sum((data-repmat(core(i,:),numsample,1)).^2,2));
            end
        case 'hamming'
            for i=1:numclass
                dis(:,i)=mean(data~=repmat(core(i,:),numsample,1),2);
            end
    end
    

    下面一段代码用于测试mykmeans和kmeans的运行结果。生成两组服从二维高斯分布的数据,作为两个数据类别,分别使用mykmeans和matlab自带的kmeans函数进行聚类分析。

    % 测试mykmeans函数
    % 公众号【数学建模公会】,HCLO4,20190902
    
    % 生成模拟数据,平面上的两组点,均服从二维高斯分布
    mu1=[2,8];
    sigma1=[2,2];
    mu2=[8,2];
    sigma2=[3,3];
    
    numsample1=100;
    numsample2=200;
    data1=zeros(numsample1,2);
    data1(:,1)=normrnd(mu1(1),sigma1(1),numsample1,1);
    data1(:,2)=normrnd(mu1(2),sigma1(2),numsample1,1);
    
    data2=zeros(numsample2,2);
    data2(:,1)=normrnd(mu2(1),sigma2(1),numsample2,1);
    data2(:,2)=normrnd(mu2(2),sigma2(2),numsample2,1);
    
    data=[data1;data2];
    
    tic,
    [cluster1,clusterhistory]=mykmeans(data,2);
    toc
    M=getFrame_Kmeans(data,clusterhistory); % 生成聚类动图
    
    tic,
    cluster2=kmeans(data,2);
    toc
    

    下面的函数实现mykmeans聚类过程的可视化,仅针对二维数据和三维数据类型。

    function M=getFrame_Kmeans(data,clusterhistory)
    % kmeans聚类过程可视化程序。只能对二维和三维数据可视化!
    %
    % INPUTS: 
    % data: 聚类用的数据,每行代表一个样本,每列代表一个特征
    % clusterhistory: mykmeans函数输出的聚类过程数据
    %
    % OUTPUT:
    % kmeans聚类过程的动画。
    
    dimension=size(data,2);
    if dimension>3 % 若三维以上,只能通过pca降维处理
        error('无法实现高于三维的数据的聚类可视化')
    end
    
    colorset=cell(1,1000);
    colorset(1:8)={'r','g','b','k','c','m','y','k'};
    for i=9:1000 %如果聚类中心数量大于8,就使用随机的颜色。
        colorset{i}=rand(1,3);
    end
    
    numcore=length(unique(clusterhistory{1}.cluster));
    numiter=length(clusterhistory);
    
    for k=1:numiter
        figure
        hold on
        switch dimension
            case 2
                for i=1:numcore
                    ind=clusterhistory{k}.cluster==i;
                    scatter(data(ind,1),data(ind,2),6,colorset{i})
                    core=clusterhistory{k}.core;
                    plot(core(i,1),core(i,2),[colorset{i},'.'],'MarkerSize',20)
                end
            case 3
                for i=1:numcore
                    ind=clusterhistory{k}.cluster==i;
                    scatter3(data(ind,1),data(ind,2),data(ind,3),6,colorset{i})
                    core=clusterhistory{k}.core;
                    plot3(core(i,1),core(i,2),core(i,3),colorset{i},'MarkerSize',6)
                end
        end
        
        M(k)=getframe(gcf);
        frame = getframe(gcf); 
        im = frame2im(frame);     %将影片动画转换为编址图像,因为图像必须是index索引图像
        imshow(im);
        [I,map] = rgb2ind(im,20); %将真彩色图像转化为索引图像
        if k==1
            imwrite(I,map,'kmeans.gif','gif','Loopcount',inf,'DelayTime',0.3);     %Loopcount只是在i==1的时候才有用
        else
            imwrite(I,map,'kmeans.gif','gif','WriteMode','append','DelayTime',1);%DelayTime:帧与帧之间的时间间隔
        end
        
        
        close(gcf);
        
    end
    
    展开全文
  • 该课题为基于kmeans聚类分割,输入一张彩色图像,可以选择需要分割成多少类,就会以不同颜色区分不同的块,带有GUI界面,操作丰富。
  • 一、kmeans聚类算法 (1) kmeans简介 K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑...

    一、kmeans聚类算法

    (1) kmeans简介
    K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
    k个初始类聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离将每个对象重新赋给最近的簇。当考察完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。如果在一次迭代前后,J的值没有发生变化,说明算法已经收敛。
    (2)算法过程如下
    1.计算欧氏距离
    2.随机选取k个初始聚类中心点
    3.更新簇的中心点
    4.迭代,直到收敛
    通常停止迭代的条件:为中心点不变。

    二、k-medoids聚类算法

         k-medoids 算法与K-means算法步骤是一致的,区别在于中心点的选取,在 k-medoids 算法中,我们将从当前 cluster 中选取这样一个点——它到其他所有(当前 cluster 中的)点的距离之和最小——作为中心点。

    三、效果

     四、代码

    https://download.csdn.net/download/weixin_41971010/20639023

    展开全文
  • kmeans聚类分析,无监督学习实现Matlab代码
  • 对数据使用kmeans
  • Matlab实现k-means聚类算法,对iris数据进行分类
  • 经过简化的kmeans算法matlab程序,可满足基本需求。
  • 鸢尾花的聚类采用的是Kmeans聚类,主要考虑如何将各列特征表示并排列组合,选择2列特征向量时可采用2个for循环,来对所有可能的组合进行遍历,选择3列特征分析时,由于情况较少则可以直接输入列。然后将特征列输入...
  • matlabkmeans聚类算法

    千次阅读 2019-07-10 10:16:40
    本文介绍了K-means聚类算法,并注释了部分matlab实现的源码。 </p><h2><a name="t0"></a>K-means算法</h2><p><span></span>K-means算法是一种硬聚类算法,根据数据到聚类中心的某种距离来作为判别该数据所属类别...
  • kmeans算法_KMeans聚类算法详解

    千次阅读 2020-11-18 18:11:07
    1. 写在前面如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法:监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Adaboost等无...
  • MATLAB实现Kmeans聚类算法

    千次阅读 2018-11-02 16:39:59
    这是我练习的第一个机器学习的算法,写的比较简单,肯定也有一些小错误。也参看了很多其他人的代码。现在贴出来算是我学习的一个历程啦。 clear all;close all;clc; data1=normrnd(0,0.25,100,2); %生成符合 data2=...
  • kmeans聚类分析,无监督学习实现Matlab代码
  • kmeans聚类算法,kmeans聚类算法优缺点,matlab源码.rar
  • kmeans聚类算法,kmeans聚类算法优缺点,matlab源码.zip
  • Kmeans聚类,kmeans聚类算法,matlab源码.rar
  • Kmeans聚类,kmeans聚类算法,matlab源码.zip
  • Kmeans聚类-matlab实现

    千次阅读 2019-04-26 20:16:39
    算法初始随机选取的三个样本,按照书上选的运行测试代码,可根据需求对代码进行改写,详细过程如下: 1、data.txt 数据集 0.697 0.460 0.774,0.376 0.634,0.264 0.608,0.318 0.556,0.215 0.403,0.237 0.481,0.149 0....
  • Kmeans聚类算法及其matlab源码

    万次阅读 多人点赞 2016-10-24 14:57:34
    本文介绍了K-means聚类算法,并注释了部分matlab实现的源码。
  • kmeans聚类算法

    2011-03-19 15:48:31
    K-均值聚类(K-means clustering)是Mac Queen提出的一种非监督实时聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K。
  • kmeans聚类算法matlab实现

    万次阅读 多人点赞 2015-11-12 19:25:10
    kmeans聚类算法介绍:kmeans算法是一种经典的无监督机器学习算法,名列数据挖掘十大算法之一。作为一个非常好用的聚类算法,kmeans的思想和实现都比较简单。kmeans的主要思想:把数据划分到各个区域(簇),使得数据与...
  • KMEANS聚类算法MATLAB代码 Algorithm 用Python,Matlab写的一些算法 \ (主目录) 文件名:算法名_功能 DeepLearning 来自吴恩达的深度学习课程 IntelligentAlgorithm 智能算法的代码 粒子群 模拟退火 鱼群算法 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,384
精华内容 953
关键字:

kmeans聚类算法matlab

matlab 订阅