kmeans

Calculating the percentage of variance measure for k-means?

匿名 (未验证) 提交于 2019-12-03 01:33:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: On the Wikipedia page , an elbow method is described for determining the number of clusters in k-means. The built-in method of scipy provides an implementation but I am not sure I understand how the distortion as they call it, is calculated. More precisely, if you graph the percentage of variance explained by the clusters against the number of clusters, the first clusters will add much information (explain a lot of variance), but at some point the marginal gain will drop, giving an angle in the graph. Assuming that I have the

Replace definition of built-in function in R?

匿名 (未验证) 提交于 2019-12-03 01:22:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: The 'sparcl' package uses the 'kmeans' function in the standard 'stat' package. I want to make it use my own implementation of kmeans++ instead. One way to do this would be to edit the code in the sparcl package itself. I'd prefer to avoid this, both because it would be messy and because I'm not sure how I would then install that edited code in R. Unfortunately, the superassignment operator "<<-" doesn't work: > kmeans <<- function(x) print("hi!") Error: cannot change value of locked binding for 'kmeans' neither does "assign": assign("kmeans

kmeans

匿名 (未验证) 提交于 2019-12-03 00:03:02
import numpy as np def init_centroids ( k , n_features ): return np . random . random ( k * n_features ). reshape (( k , n_features )) def update_centroids ( points , centroid_index ): k = max ( centroid_index )+ 1 new_centroids = np . zeros (( 10 , 2 )) for i in range ( k ): new_centroids [ i ]= points [ centroid_index == i ]. mean ( axis = 0 ) return new_centroids def distance ( pointA , pointB ): return np . sqrt (( pointA [ 0 ]- pointB [ 0 ])** 2 +( pointA [ 1 ]- pointB [ 1 ])** 2 ) def belongs2 ( point , centroids ): index = 0 min_distance = np . inf for i in range ( len ( centroids )): d

KMeans聚类

匿名 (未验证) 提交于 2019-12-02 23:57:01
  常用的聚类方法:   ①分裂方法:   K-Means算法(K-平均)、K-MEDOIDS算法(K-中心点)、CLARANS算法(基于选择的算法)   ②层次分析方法:   BIRCH算法(平衡迭代规约和聚类)、CURE算法(代表点聚类)、CHAMELEON算法(动态模型)   ③基于密度的方法:   DBSCAN(基于高密度连接区域)、DENCLUE算法(密度分布函数)、OPTICS算法(对象排序识别)   ④基于网格的方法:   STING算法(统计信息网络)、CLIOUE算法(聚类高维空间)、WAVE-CLUSTRE(小波变换)   ⑤基于模型的方法:   统计学方法、神经网络方法   其中Kmeans、K中心点、系统聚类比较常用。   KMeans: K-均值聚类也叫快速聚类法,在最小化误差函数的基础上将数据划分为预定的类数K。该算法原理简单并便于处理大量的数据。   K中心点: K-均值算法对孤立点的敏感性,K-中心点算法不采用簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心。   系统聚类: 系统聚类也叫多层次聚类,分类的单位由高到低呈树形结构,且所处的位置越低,其所包含的对象就越少,但这些对象间的共同特征越多。该聚类方法只适合在小数据量的时候使用,数据量大的时候处理速度会非常慢。 KMeans聚类   K-Means:在 最小化误差函数

Kmeans++及字典学习

匿名 (未验证) 提交于 2019-12-02 23:43:01
1. Kmeans++ Kmeans 中对聚类中心的初始化比较敏感,不同的初始值会带来不同的聚类结果,这是因为 Kmeans 仅仅是对目标函数求近似最优解,不能保证得到全局最优解。 在常规的 Kmeans 中,聚类中心的初始化都采用随机初始化的方式,这样会存在一个问题:如果数据在某个部分较密集,那么产生的随机数会以更高的概率靠近这些数据。 例如,假设输入数据为: [ 0.8 , 0.85 , 0.9 , 0.95 , 1 , 1.05 , 1.1 , 1.2 , 3.0 , 3.1 , 3.2 ] , [0.8, 0.85, 0.9, 0.95, 1,1.05, 1.1, 1.2, 3.0, 3.1, 3.2], [ 0 . 8 , 0 . 8 5 , 0 . 9 , 0 . 9 5 , 1 , 1 . 0 5 , 1 . 1 , 1 . 2 , 3 . 0 , 3 . 1 , 3 . 2 ] , 如下图所示: 如果随机初始化两个聚类中心,那这两个聚类中心都会以更高的概率靠近 1.0 附近的数据,也就是说,很可能出现:随机初始化的两个聚类中心都聚类 1.0 附近的数据较近,这样会导致聚类效果不好。 为了解决上述问题,David Arthur 提出了 Kmeans++ 算法,该方法可以有效的产生好的聚类中心,过程如下: 1.从输入的数据点集合中随机选择一个点作为第一个聚类中心 2

kmeans和knn相同点和不同点:

匿名 (未验证) 提交于 2019-12-02 23:42:01
kmeans和knn相同点和不同点: 一、K最近邻(kNN,k-NearestNeighbor)分类算法,找到最近的k个邻居(样本),在前k个样本中选择频率最高的类别作为预测类别。 步骤: 1)算距离:给定测试对象,计算它与训练集中的每个对象的距离 2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻 3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类 二、K-Means算法-聚类:是一种无监督的学习,将相似的对象归到同一簇中。聚类的方法几乎可以应用所有对象,簇内的对象越相似,聚类的效果就越好。K-means算法中的k表示的是聚类为k个簇,means代表取每一个聚类中数据值的均值作为该簇的中心,或者称为质心,即用每一个的类的质心对该簇进行描述。 步骤: 1)首先,随机确定k个初始点的质心; 2)然后将数据集中的每一个点分配到一个簇中(即为每一个点找到距其最近的质心,并将其分配给该质心所对应的簇); 3)该步完成后,每一个簇的质心更新为该簇所有点的平均值 区别1:聚类和分类最大的不同在于,分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来,所以,聚类有时也叫无监督学习。聚类分析试图将相似的对象归入同一簇,将不相似的对象归为不同簇 区别2:K-means算法虽然比较容易实现,但是其可能收敛到局部最优解

瑞士卷聚类-kmeans

匿名 (未验证) 提交于 2019-12-02 23:32:01
瑞士卷聚类 from mpl_toolkits.mplot3d import Axes3D from sklearn.cluster import KMeans from sklearn import manifold, datasets import matplotlib.pyplot as plt #生成带噪声的瑞士卷数据集 X,color = datasets.samples_generator.make_swiss_roll(n_samples=1500) #使用100个K-means簇对数据进行近似 clusters_swiss_roll = KMeans(n_clusters=100,random_state=1).fit_predict(X) fig2 = plt.figure() ax = fig2.add_subplot(111,projection='3d') ax.scatter(X[:,0],X[:,1],X[:,2],c = clusters_swiss_roll,cmap = 'Spectral') plt.show()

python实现简单KMeans算法

匿名 (未验证) 提交于 2019-12-02 22:51:30
参考链接: 北京理工大学公开课 code: import numpy as np import PIL.Image as image # PIL from sklearn.cluster import KMeans # KMeans # def loadData ( filepath ) : # "rb" f = open ( filepath , "rb" ) data = [] img = image. open (f) m,n = img.size for i in range (m) : for j in range (n) : x,y,z = img. getpixel ((i,j)) data. append ([x / 256.0 ,y / 256.0 ,z / 256.0 ]) f. close () return np. mat (data),m,n imageData,row,col = loadData ( ".//data//bull.jpg" ) # km = KMeans ( n_clusters = 3 ) label = km. fit_predict (imageData) label = label. reshape ([row,col]) # # "L" pic_new = image. new ( "L" ,(row,col)) # for

kmeans matlab算法实现

做~自己de王妃 提交于 2019-11-30 05:51:47
function kmeans() clear all; clc; k=3;%k为聚类个数 x = 0.8 + sqrt(0.01) * randn(100,2); %随机生成数据集 y = 0.2 + sqrt(0.02) * randn(100,2); z= 0.5 + sqrt(0.01) * randn(100,2); % size(x)= 100,2 % plot(x(:,1),x(:,2),'+r',y(:,1),y(:,2),'+b',z(:,1),z(:,2),'+g'); %x1=x(:,1);x2=x(:,2); 从x这个矩阵中取出第一列赋给x1,再从x矩阵中取出第二列赋给x2。执行后x1和x2是两个列向量,分别是x这个矩阵第一列和第二列。 % axis([0,1,0,1]);xlabel('red');ylabel('acc');title(''); D=[x;y;z]; %得到数据集 % size(D)=(300.2) %plot(D(:,1),D(:,2),'+r'); %可查看初始数据集的分布 u=randperm(size(D,1),k);%随机选k个向量作为初始向量 %p = randperm(n,k) 返回行向量,其中包含在 1 到 n(包括二者)之间随机选择的 k 个唯一整数。 u=D(u,:); c=zeros(size(D,1),1);

说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

ⅰ亾dé卋堺 提交于 2019-11-30 03:38:11
随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在数据可视化领域也开展了深入的探索和实践。 个推的数据可视化探索和应用由需求出发,从基于开源平台到结合个性化需求进行定制化开发,打造出个推实时消息推送下发图,人群分布热力图等优秀数据可视化作品。这一过程中,个推积累沉淀了大量的数据可视化组件,打磨了自己的数据可视化技术能力。其中,个推热力图正应用在智慧城市、人口空间规划、公共服务等领域,为其提供强大的数据支撑。 个推消息下发图 个推打造的湖滨商圈区域人口热力图 本文就和大家分享一下个推的数据可视化实践、遇到的问题及解决思路,希望大家能从中有所受益。 一、数据可视化的构成 数据可视化由四类可视化元素构成:背景信息、标尺、坐标系、视觉暗示。 1.1 背景信息 背景信息就是标题、度量单位、注释等附加类的信息。主要是为了帮助大屏受众更好地理解相关背景信息,即5W信息:何人(who)、何事(what)、何时(when)、何地(where)、为何(why)。 1.2 标尺 标尺主要用来衡量不同方向和维度上的数据大小,常用的有数字标尺、分类标尺、时间标尺等,类似我们熟悉的刻度。 1.3 坐标系 坐标系有一个结构化的空间,还有指定图形和颜色画在哪里的规则,用于编码数据的时候