本文主要是介绍《机器学习实战》笔记之十——利用K均值聚类算法对未标注数据分组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第十章 利用K均值聚类算法对未标注数据分组
10.1 K-均值聚类算法
K-均值是发现给定数据集的k个簇的算法,每个簇通过其质心来描述。其优点为容易实现,但可能收敛到局部最小值,在大规模数据集上收敛较慢。
随机确定k个初始点为质心,为每个点找距其最近的质心,并将其分配给该质心所对应的簇,每个簇的质心更新为该簇所有点的平均值。质心可用任意距离度量方式,但结果相应的受到距离度量方式影响。伪代码:
coding:
#!/usr/bin/env python # coding=utf-8 from numpy import *def loadDataSet(fileName): #导入数据集dataMat = []fr = open(fileName)for line in fr.readlines():curLine = line.strip().split("\t")fltLine = map(float,curLine)dataMat.append(fltLine)return dataMatdef distEclud(vecA, vecB): #欧式距离return sqrt(sum(power(vecA - vecB, 2)))def randCent(dataSet, k):n = shape(dataSet)[1] #取dataSet的列数centroids = mat(zeros((k,n))) #每维都创建k个随机数,数在每维最大最小值之间for j in range(n):minJ = min(dataSet[:,j]) #每维最小值rangeJ = float(max(dataSet[:,j]) - minJ)centroids[:,j] = minJ + rangeJ*random.rand(k,1) #random.rand(k,1),k个0到1.0之间的随机数return centroidsdatMat
这篇关于《机器学习实战》笔记之十——利用K均值聚类算法对未标注数据分组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!