Python-kmeans算法实践
来源:互联网 发布:mac 最小化窗口快捷键 编辑:程序博客网 时间:2024/06/07 08:14
import numpy as np#调用一些下面写的子函数模拟实现kmeans的功能def kmeans(x, k, maxIt): numPoints, numDim = x.shape dataSet = np.zeros((numPoints, numDim + 1)) dataSet[:, :-1] = x #centroids = dataSet[np.random.randint(numPoints, size = k), :] #对于中心点的选择应是以随机的方式,这里选择和上篇例子中同样的中心点为了验证结果。 centroids = dataSet[0:2, :] centroids[:, -1] = range(1, k+1) iterations = 0 oldCentroids = None while not shouldStop(oldCentroids, centroids, iterations, maxIt): print "iteration; \n", iterations print "dataSet: \n", dataSet print "centroids: \n", centroids oldCentroids = np.copy(centroids) iterations += 1 updataLabels(dataSet, centroids) centroids = getCentroids(dataSet, k) return dataSet#对迭代停止时间的判断函数 def shouldStop(oldCentroids, centroids, iterations, maxIt): if iterations > maxIt: return True return np.array_equal(oldCentroids, centroids) #根据中心点修改类别标签 def updataLabels(dataSet, centroids): numPoints, numDim = dataSet.shape for i in range(0, numPoints): dataSet[i,1] = getLabelFromClosestCentroid(dataSet[i,:1], centroids)#计算得出最近的中心点将标签返回的函数 def getLabelFromClosestCentroid(dataSetRow, centroids): label = centroids[0, -1]; minDist = np.linalg.norm(dataSetRow - centroids[0, :-1]) for i in range(1, centroids.shape[0]): dist = np.linalg.norm(dataSetRow - centroids[i, :-1]) if dist < minDist: minDist = dist label = centroids[i, -1] print "minDist: ", minDist return label #根据均值更新中心点 def getCentroids(dataSet, k): result = np.zeros((k, dataSet.shape[1])) for i in range(1, k+1): oneCluster = dataSet[dataSet[:, -1] == i, :-1] result[i-1, :-1] = np.mean(oneCluster, axis = 0) result[i-1, -1] = i return result#下面是一个例子 x1 = np.array([1,1])x2 = np.array([2,1])x3 = np.array([4,3])x4 = np.array([5,4])testX = np.vstack((x1,x2,x3,x4))result = kmeans(testX, 2, 10)print "final result:"print result
最后的例子和上篇的例子一样,计算结果也相同,是正确的结果。
0 0
- Python-kmeans算法实践
- KMeans算法实践
- python kmeans算法
- kmeans 算法,python
- python KMeans算法学习
- python实现kmeans算法
- python 基本Kmeans算法实现
- kmeans算法(python实现)
- Kmeans算法的Python实现
- 【python sklearn】kmeans算法运用
- kmeans算法原理以及实践操作
- kmeans算法及python代码参考
- kmeans算法及python代码参考
- Kmeans聚类算法及其Python实现
- 【machine learning】KMeans算法(Python版)
- Kmeans算法详解及MATLAB、Python实现
- Kmeans算法 python实现(改)
- Python实现标准的Kmeans算法
- Hibernate基本原理(一)
- redis和memcache的区别
- scanf的注意
- 田忌赛马
- php & apache2 install under Ubuntu
- Python-kmeans算法实践
- css3新方法calc()用法
- tcpdump的用法
- 纯jq仿今日头条导航栏
- 我的编程马拉松
- 有用的连接
- Spark Graphx图计算之aggregateUsingIndex实操!
- ajax+ashx 完美实现input file上传文件
- Solidity 文档--目录