聚类

属于无监督学习

目的:找到数据集中的不同群组

分级聚类

主要思想是:

  1. 在数据集中找出两个最相似的节点

  2. 根据这两个节点生成一个新的聚类节点,这个节点的数据为两个子节点的数据的平均值,

  3. 将两个子节点从数据集中去除,将新的聚类节点加入数据

  4. 回到1,直至数据集中只剩一个节点

K-means聚类

使用分级聚类的时候,因为得计算所有数据的两两之间的距离,形成新的聚类之后还得重新计算,所以在数据集较大的时候计算量会很大。
除了分级聚类之外还有一种K-均值聚类方法,主要思想为:

  1. 随机创建(给定)k个点作为中心点

  2. 遍历数据集中每个点,找到距离最近的中心点,将该点划分在该中心点下

  3. 遍历并划分完成后,将各个中心点移到自己组下所有点的中心位置

  4. 回到2,直到移动之后的结果(不变)和上次一样

结果展示:使用树状图来展现聚类之后的结果

import feedparserimport re# testerror_list = []# 返回一个RSS订阅源的标题和包含单词计数情况的字典def get_word_counts(url):
    # 解析订阅源
    doc = feedparser.parse(url)    
    # 单词计数
    wc = {}    
    # 遍历所有文章条目,统计所有单词出现次数
    for entry in doc.entries:        if 'summary' in entry:
            summary = entry.summary        else:
            summary = entry.description        
        # 提取出所有单词
        words = get_words(entry.title + ' ' + summary)        # 统计所有单词出现的次数
        for word in words:
 &nb