一、K-mediods 算法步骤:
1、随机选取k个样本作为中心点
2、一层遍历每一个样本,二层遍历每一个中心样本,找出离该样本最近的中心样本
3、遍历中心样本,该中心样本划分出来的该簇样本,遍历该簇样本,找出离所有样本距离最小的样本,代替旧中心
4、直到达到指定训练次数或者样本分类结果不再变化,结束训练
1 import numpy as np 2 from numpy import * 3 4 5 with open("xigua.txt") as file: 6 data_lines = file.readlines() 7 data_list = [[] for i in data_lines] 8 for item in range(len(data_lines)): 9 data_list[item][:] = (float(i) for i in data_lines[item].strip().split(",")[0:3]) 10 data_list[item].append(-1) 11 # print(data_list) 12 13 14 def choice_center(data, k): 15 centers = [] 16 for i in np.random.choice(len(data), k): 17 centers.append(data[i]) 18 print("随机选取的中心点(第一次):\n", centers) 19 return centers 20 21 22 def distance(a, b): 23 dis = [] 24 for i in range(len(a)): 25 dis.append(pow(a[i] - b[i], 2)) 26 #