首页 > 代码库 > 《集体智慧编程》学习笔记 第三章
《集体智慧编程》学习笔记 第三章
from math import sqrtfrom PIL import Image, ImageDrawimport randomdef readfile(filename): with open(filename) as f: lines = [line for line in f] colnames = lines[0].strip().split(‘\t‘)[1:] rownames = [] data = http://www.mamicode.com/[]"Iteration %d" % t) bestmatches = [[] for i in range(k)] for j in range(len(rows)):#j代表博客数 row = rows[j] bestmatche = 0 #假设与第一个聚点最近 for i in range(k):#每一个博客与四个聚点计算,求最近聚点 d = diatance(clusters[i], row) if d < diatance(clusters[bestmatche], row): bestmatche = i bestmatches[bestmatche].append(j) #bestmatches里面四个list,第一个list就存与第一个聚点相近的博客(比如第一个博客为0) if bestmatches == lastmatches: #这个if 跟for t in range(100)是匹配的 break #如果迭代得到结果与上次一样,则整个过程结束 lastmatches = bestmatches #把所有中心点移到其所有成员的平均位置处 for i in range(k): avgs = [0.0] * len(rows[0])#产生和单词数一样多的0.0 0.0 if len(bestmatches[i]) > 0:#如果某个聚点中有许多相近的点 for rowid in bestmatches[i]:#把每个聚点中的博客所属行数取出来 for m in range(len(rows[rowid])): #把每列 avgs[m] += rows[rowid][m]#把每行相同列的单词数加在一起 for j in range(len(avgs)): avgs[j] /= len(bestmatches[i]) #某个单词的总数/聚点中博客的个数 算出这个聚点中各种单词的平均数 clusters[i] = avgs #新聚点是[[],[],[],[]]的 内部的[]就是不同单词的平均个数 return bestmatchesblognames, words, data = http://www.mamicode.com/readfile(‘blogdata1.txt‘)>
《集体智慧编程》学习笔记 第三章
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。