聚類

屬于無監(jiān)督學(xué)習(xí)

目的:找到數(shù)據(jù)集中的不同群組

分級(jí)聚類

主要思想是:

  1. 在數(shù)據(jù)集中找出兩個(gè)最相似的節(jié)點(diǎn)

  2. 根據(jù)這兩個(gè)節(jié)點(diǎn)生成一個(gè)新的聚類節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)的數(shù)據(jù)為兩個(gè)子節(jié)點(diǎn)的數(shù)據(jù)的平均值,

  3. 將兩個(gè)子節(jié)點(diǎn)從數(shù)據(jù)集中去除,將新的聚類節(jié)點(diǎn)加入數(shù)據(jù)

  4. 回到1,直至數(shù)據(jù)集中只剩一個(gè)節(jié)點(diǎn)

K-means聚類

使用分級(jí)聚類的時(shí)候,因?yàn)榈糜?jì)算所有數(shù)據(jù)的兩兩之間的距離,形成新的聚類之后還得重新計(jì)算,所以在數(shù)據(jù)集較大的時(shí)候計(jì)算量會(huì)很大。
除了分級(jí)聚類之外還有一種K-均值聚類方法,主要思想為:

  1. 隨機(jī)創(chuàng)建(給定)k個(gè)點(diǎn)作為中心點(diǎn)

  2. 遍歷數(shù)據(jù)集中每個(gè)點(diǎn),找到距離最近的中心點(diǎn),將該點(diǎn)劃分在該中心點(diǎn)下

  3. 遍歷并劃分完成后,將各個(gè)中心點(diǎn)移到自己組下所有點(diǎn)的中心位置

  4. 回到2,直到移動(dòng)之后的結(jié)果(不變)和上次一樣

結(jié)果展示:使用樹狀圖來展現(xiàn)聚類之后的結(jié)果

import feedparserimport re# testerror_list = []# 返回一個(gè)RSS訂閱源的標(biāo)題和包含單詞計(jì)數(shù)情況的字典def get_word_counts(url):
    # 解析訂閱源
    doc = feedparser.parse(url)    
    # 單詞計(jì)數(shù)
    wc = {}    
    # 遍歷所有文章條目,統(tǒng)計(jì)所有單詞出現(xiàn)次數(shù)
    for entry in doc.entries:        if 'summary' in entry:
            summary = entry.summary        else:
            summary = entry.description        
        # 提取出所有單詞
        words = get_words(entry.title + ' ' + summary)        # 統(tǒng)計(jì)所有單詞出現(xiàn)的次數(shù)
        for word in words:
 &nb