K-Means++的代码
来源:互联网 发布:云计算现状 编辑:程序博客网 时间:2024/04/30 13:52
function [L,C] = kmeanspp(X,k)%KMEANS Cluster multivariate data using the k-means++ algorithm.% [L,C] = kmeans_pp(X,k) produces a 1-by-size(X,2) vector L with one class% label per column in X and a size(X,1)-by-k matrix C containing the% centers corresponding to each class.% Version: 2013-02-08% Authors: Laurent Sorber (Laurent.Sorber@cs.kuleuven.be)L = [];L1 = 0;while length(unique(L)) ~= k% The k-means++ initialization.% C就是从X中随机挑一个随机点C = X(:,1+round(rand*(size(X,2)-1))); %size(X,2)是数据集合X的数据点的数目,C是中心点的集合L = ones(1,size(X,2));for i = 2:kD = X-C(:,L); %-1,此时的C扩大了,D相当于每个X-C的集合D = cumsum(sqrt(dot(D,D,1))); %将每个数据点与中心点的距离,依次累加,欧氏距离if D(end) == 0, C(:,i:k) = X(:,ones(1,k-i+1)); return; end C(:,i) = X(:,find(rand < D/D(end),1)); %find的第二个参数表示返回的索引的数目,D/D(end)距离越远概率越大[~,L] = max(bsxfun(@minus,2*real(C'*X),dot(C,C,1).')); %碉堡了,这句,将每个数据点进行分类。end% The k-means algorithm.% any函数:检测矩阵中是否有非零元素,如果有,则返回1,否则,返回0。while any(L ~= L1)L1 = L;for i = 1:k, l = L==i; C(:,i) = sum(X(:,l),2)/sum(l); end %l是各族索引[~,L] = max(bsxfun(@minus,2*real(C'*X),dot(C,C,1).'),[],1);endend clear all; close all; clcx=[randn(3,2)*.4;randn(4,2)*.5+ones(4,1)*[4 4]];[L, C] = kmeanspp(x',2);LC
0 0
- K-Means++的代码
- K-MEANS的研究及matlab代码
- 基于python3的k-means代码实现
- k-means算法代码
- K-means代码
- K-means Matlab代码
- K-means聚类分析MATLAB代码
- 转:Python K-means代码
- K-means算法JAVA代码
- K-Means算法的代码实现(Java)
- [algorithm,c++] 基于c++的二维k-means代码实现
- K-Means算法的代码实现(Java)
- K-Means算法的代码实现(Java)
- 数据分类K—means 算法的python代码实现
- 简单的K-means算法C语言实现代码
- k-means的简化版本
- k-means的MapReduce实现
- K-Means的简单实现
- elasticsearch 索引 Warmer 管理
- 关于C语言0x01
- iOS 本地数据持久化
- Arrays.ArrayList 固定长度的List集合
- Codeforces Round #299
- K-Means++的代码
- linux时间函数总结
- Spring constructor-arg、c、p
- ValueError: urls must start with a leading slash
- ionic初步测试-listView效果
- 删除SQL Server 2008遇到的问题
- java跟日期相关的类
- 华为oj等差数列
- Xiinx中关于DDS IP核 的学习