实现K均值算法。。。
书上的例子是错的!那个数据集,用书上选的那几个初始点,则一开始就是收敛的。
实现时,顺便学了matplotlib.animation,可以把聚类过程用动态图显示出来。
代码如下:
# coding: utf-8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random
import itertools
def rand_RGB():
return np.random.random(3)
def cal_dis(x, y):
return np.linalg.norm(x-y)
# return sum(np.abs(x-y))
def Kmeans(nb_cluster, points):
nb_sample = len(points)
init_points_id = random.choice(list(itertools.combinations(range(nb_sample), nb_cluster)))
centers = points[init_points_id, :]
colors = [rand_RGB() for i in range(nb_cluster)]
# colors = ['r', 'g', 'b']
imgs = []
max_iter = 100
for _ in range(max_iter):
# print centers
class_poi = [np.argmin([cal_dis(point, center) for cent

本文介绍了在实现K均值算法过程中发现书本示例的错误,并通过编程不仅纠正了错误,还利用matplotlib.animation模块创建了聚类过程的动态图。展示了如何对50个随机点进行4类聚类的动态效果。
最低0.47元/天 解锁文章
》 习题9.4参考答案&spm=1001.2101.3001.5002&articleId=51586357&d=1&t=3&u=9db15498fdf34cbeb3ec4f93f805dc32)
1749

被折叠的 条评论
为什么被折叠?



