kmeans演算法的個人理解

2021-06-19 05:50:46 字數 633 閱讀 7922

1 kmeans演算法是一種什麼樣的演算法?

答:kmeans演算法是一種聚類演算法,在使用kmeans演算法時並不需要事先構建模型(如決策樹判斷需事先構建決策樹,knn判斷需事先構建kd樹等),而是直接進行聚類。

它的基本過程是:

1. 對於n個n維空間的待分類點,選出k個點作為初始質心(初始中心點)

2. 對於空間中的n-k個剩餘點,若它離初始質心x的(歐幾里得距離/余弦相似度)最近,他就屬於以x為質心的簇。

3. 完成k個簇的建立後,在重新計算k個質心(通常取簇的中位數)

4 重複 2步驟和3步驟,直到質心不發生改變。 

簡單的說,這個演算法的輸入是全體n個點和k個特殊點。輸出為k個類,k個類的總和為n。

2 關於余弦相似度的理解:

余弦相似度其實是兩個向量的cos值,既cos(x,y) = x*y /||x|| ||y||     x*y 為響亮的點積,||x|| 為向量的長度 具體公式見此文章

若:x=(3,2,0,5) y=(1,0,0,0)   x*y = 3*1 + 2*0 + 0*0 + 5*0  ||x||的平方=3*3 + 2*2 + 0*0 + 5*5  ||y||的平方=1*1 + 0*0 + 0*0 + 0*0    cos(x,y)= 0.41

KMP演算法的個人理解

自學了一段時間,剛剛準備轉行做軟體開發,面試過程中被指出計算機基礎知識薄弱。因為是非科班出生,確實有些計算機方面的基礎沒有學過,也開始惡補這些方面的東西。最近在學習資料結構與演算法過程中,學到kmp演算法,甚是難解。看了阮一峰的網路日誌後才慢慢理解,但也發現其中的瑕疵,在此也順帶指出,至於對或不對,...

KMP演算法的個人理解

kmp演算法是一種改進的字串匹配演算法,由d.e.knuth,j.h.morris和v.r.pratt同時發現,因此人們稱它為克努特 莫里斯 普拉特操作 簡稱kmp演算法 kmp演算法的關鍵是利用匹配失敗後的資訊,儘量減少模式串與主串的匹配次數以達到快速匹配的目的。kmp演算法的核心內容是乙個部分匹...

個人理解的kmp演算法

kmp還是挺難上手的,看書加看部落格,看了有五六篇才理解,看了大概四個小時。include include include using namespace std next陣列本質是模式串中的字首和字尾的相等數 int next 555 得到next陣列的過程也是模式串自身匹配的過程 void ge...