首页 > 搜索 > k-means算法非数值型,聚类算法K

k-means算法非数值型,聚类算法K

互联网 2020-10-24 09:17:58
在线算命,八字测算命理

这一节我们来讨论下聚类算法,聚类属于无监督问题,给出的数据没有标签值,需要机器算法自行去探索其中的规律,根据该规律将相近的数据划分为一类。聚类算法理解起来非常容易,没有数学公式的推导。我们用下图来做个简单的说明,原始数据是没有颜色的,我们通过聚类算法将相近的数据分成了三类,并标记了三种颜色。

cluster.png1.K-MEANS算法的基本概念1.指定簇的个数,需要指定K值,k-means会根据指定的k值将数据分为k类。实际代码:km = KMeans(n_clusters = 3),代码中的3就是我们指定的k值。2.质心:均值,所有数据点各向量的平均值,类似于高中物理中的重心的概念。3.距离度量:计算每个数据点距离质心的距离。2.K-MEANS工作流程简单介绍我们用下图来对K-Means算法做一个简单的说明。首先,对于一个数据集,我们先随机给出两个质心,然后我们计算每个数据点距离两个质心的距离d1,d2,然后比较的d1,d2的大小,哪个值小,数据点就属于哪一类。其次,我们对第一次分类完的数据再次更新其质心(各数据点各维度的均值),再重复第一步的距离计算与比较过程,经过多次的迭代,最终我们就可以将数据分为2类。kmeans data process.png3.K-MEANS算法的优缺点优点:理解简单,执行速度快,只需要指定n_clusters参数就可以了,适合常规数据集。缺点:没有标签值,模型效果难以评估,所以很难确定分多少簇效果较好。复杂度与样本呈线性关系,很难发现任意形状的簇。如下图,这种形状数据集难以分类。difficult to split.png4.K-MEANS算法API文档简介

sklearn.cluster.KMeans(n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=None, algorithm=’auto’)

关键参数说明:n_clusters:数据集要切分的类别数量,整型值,默认为8.K-MEANS算法样例演示

import numpy as npfrom sklearn.cluster import KMeans#随机构造部分数据X = np.array([[1,6],[2,4],[7,2],[8,5],[9,3],[5,3]])#构建模型km = KMeans(n_clusters=2).fit(X)#查看kmeans的分类结果km.labels_[1, 1, 0, 0, 0, 0]#查看数据集的质心点位置km.cluster_centers_[[7.25, 3.25], [1.5 , 5.]]#使用km模型对未知数据集进行预测km.predict([[3,9]])[1]
免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

相关阅读

一周热门

查看更多