赞
踩
数据下载 提取码:quu3
导入库并载入数据:
- import numpy as np
- import matplotlib.pyplot as plt
-
- # 载入数据
- data = np.genfromtxt("kmeans.txt", delimiter=" ")
定义函数:计算距离、初始化聚类中心和更新聚类中心函数:
- # 计算距离
- def euclDistance(vector1, vector2):
- return np.sqrt(sum((vector2 - vector1)**2))
-
- # 初始化质心
- def initCentroids(data, k):
- numSamples, dim = data.shape
- # k个质心,列数跟样本的列数一样
- centroids = np.zeros((k, dim))
- # 随机选出k个质心
- for i in range(k):
- # 随机选取一个样本的索引
- index = int(np.random.uniform(0, numSamples))
- # 作为初始化的质心
- centroids[i, :] = data[index, :]
- return centroids
-
- # 传入数据集和k的值
- def kmeans(data, k):
- # 计算样本个数
- numSamples = data.shape[0]
- # 样本的属性,第一列保存该样本属于哪个簇,第二列保存该样本跟它所属簇的误差
- clusterData = np.array(np.zeros((numSamples, 2)))
- # 决定质心是否要改变的变量
- clusterChanged = True
-
- # 初始化质心
- centroids = initCentroids(data, k)
-
- while clusterChanged:
- clusterChanged = False
- # 循环每一个样本
- for i in range(numSamples):
- # 最小距离
- minDist = 100000.0
- # 定义样本所属的簇
- minIndex = 0

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。