《集體智慧型程式設計》讀書筆記 1 聚類簡介

2022-03-15 21:15:24 字數 2111 閱讀 2897

1、聚類演算法的目的是採集資料,然後從中找出不同的群組。

2、universal feed parser

3、皮爾遜相關度其實判斷的是兩組資料與某條直線的擬合程度,當兩者完全匹配時,計算結果為1.0,當兩者毫無關係時,計算結果為0.0.

4、分級聚類

分級聚類的結果會產生一棵樹:

分級聚類雖然會返回一棵形象直觀的樹,但這種方法有兩個缺點。在沒有額外指定的情況下,樹形檢視不會真正將資料拆分成不同的組,而且該演算法的計算量驚人。因為我們必須計算每兩個資料項之間的關係,並且在合併項之後這些關係還得再計算,所以在處理大規模的資料集時,該演算法的執行速度會非常緩慢。

5、k-均值聚類

(會預先告訴演算法希望聚成幾類)

k-均值聚類演算法首先會隨機確定k個中心位置,然後將各個資料項分配給最臨近的中心點。待分配完成後,聚類中心會移動到分配給該聚類的所有節點的平均位置處,然後整個分配過程重新開始。這一過程會一直重複下去,知道分配過程不再產生變化為止。

例如5個資料項的2個聚類:

k-均值聚類的計算效率會比分級聚類快一些,但是k值的選取會影響聚類的效果。

6、beautiful soup

是乙個解析網頁和構造結構化資料表達形式的優秀函式庫。它允許我們利用型別(type)、id或者任何屬性來訪問網頁的任何元素。它可以很好的處理包含不規範html標記的web頁面,當我們根據站點的內容來構造資料集時,這一點非常有用。

7、tanimoto係數

tanimoto coefficient,它代表的是交集(兩個集合中均出現的項)與並集(兩個集合中只要有一次出現即可)的比率。

這個係數很容易計算:

def

tanimoto(v1,v2)

c1,c2,shr =0,0,0

for i in

range(len(v1))

if v1[i] != 0 : c1 += 1; #

出現在v1中

if v2[i] != 0 : c2 += 1; #

出現在v2中

if v1[i] != 0 and v2[i] != 0 : shr += 1; #

在v1和v2中都出現了

return 1.0 - (float(shr)/(c1+c2-shr))

資料格式為:

8、多維縮放(multidimentional scaling)技術

其目標是嘗試繪製出一幅圖來,圖中各資料項之間的距離遠近對應於它們彼此之間的差異程度。為了做到這一點,演算法首先需要計算出所有項之間的目標距離。

step1:距離資訊矩陣(目標距離)

step2:將所有資料項隨機放置在二維圖上

step3:計算各項資料之間的實際距離(當前距離)

step4:對資料項施力,將它推向目標距離

如a,它與b之間的目標距離為0.2,而實際距離為0.4,因此應該將a推向b。同理,應將a遠離c和d

每乙個節點的移動,都是所有其他節點施加在該節點上的推或拉的綜合效應。節點每移動一次,其當前距離和目標距離之間的差距就會減小一些。這一過程會不斷的重複多次,直到我們無法再通過移動節點來減少總體的誤差為止。

《集體智慧型程式設計》 讀書筆記

恢復內容開始 第二章 提供推薦cf 協同型過濾 允許人們根據自己對文件的感興趣程度新增標註,並利用這一資訊為他人進行文件過濾。蒐集偏好 在python中建立乙個巢狀的字典 尋找相近的使用者 計算不同使用者間的相似度評價值 方法1 歐幾里得距離評價 以經過人們一致評價的物品作為座標軸,然後將參與評價的...

集體智慧型程式設計筆記 聚類

聚類是一種很常見的資料處理方式,為的就是把具有相同型別的資料聚集在一起,再做處理,聚類屬於無監督學習演算法的一種,沒有正確的結果可供檢驗。書中介紹了兩種聚類的方法,一種是層次聚類,另一種是是k 均值聚類。層次聚類可以看做是在乙個圖中找出最小代價樹的kruskal演算法,每次處理時會將兩個相聚最近的不...

集體智慧型程式設計 讀書筆記 一

這本書豆瓣上得分很高,可以當作機器學習,資料探勘在當前web應用的入門書,我也是乙個門外漢加初學者,正在讀這本書 第二章 1.相似度,偏好 首先看例子,現在有乙個資料集 書中給出的 記錄每個人對不同電影的打分,如下所示 critics gene seymour michael phillips cl...