k-means演算法小結
資料離散化是資料預處理的乙個非常重要的步驟,就是將連續的資料分成幾個段。
舉個簡單例子,好比我們乙個班上的學生成績是從0-·100分之間的,但是我們在進行資料分析的時候呢我們把這些分數分成不及格、及格、良好、優秀四大類,實際上就是將比較連續的分數給離散化成了4種可能取值。
那這樣做有什麼好處呢?
一些資料探勘演算法中(比如apriori演算法),要求資料是分類屬性形式。因此,就需要在資料預處理階段將連續屬性的數給它離散化,除此之外離散化還具有以下好處:
當然,一切都還是看業務需要。
離散化的工作很容易理解,就是依照一定規律把寫資料給分成少數的幾類。那這個規律是什麼呢?
常用的離散化方法有:
我們重點研究一下k-means演算法。
聚類分析是在資料中發現資料物件之間的關係,將資料進行分組,組內的相似性越大,組間的差別越大,則聚類效果越好。
為什麼這麼說呢?就像最前面那個成績聚類的例子,我們以60分為界限劃分及格和不及格,那60分的同學真的就比59分的同學優秀麼?其實他們可能根本就是一類人。
所以,我們希望能有演算法將這些資料更科學的離散化,就是讓類和類之間的區分更大,不再殘忍地把59.5和60給分割成不同的兩個世界。
k-means 演算法簡單說,就是乙個do-while迴圈。
偽**如下:
選擇k個點作為初始質心
repeat
將每個點指派到最近的質心,形成k個簇
重新計算每個簇的質心
until 簇不發生變化或達到最大迭代次數
上面偽**幾句話雖然少,但是對k-means演算法對描述已經很透了。
我們通過乙個具體的例子來理解一下。大家想象一下,假設操場上有20個學生隨機地站在那不動,我們想把他們分成5組,用k-means演算法該怎麼分呢?
從上面兩個小結的描述可以看出來,k-means演算法的關鍵有三點:(1)我們怎麼知道要分幾類?也就是說這個k是怎麼確定的?(2)k確定了後,怎樣確定k個初始的中心點呢?(3)各個點到中心點的距離是怎麼算得?
離散化及其寫法
離散化是演算法競賽中常常要用到的一種技巧,經常會出現在一些資料結構的題目中,和一些資料結構結合起來。試想,假如你現在看到了一道線段樹的裸題,在你極其興奮的同時發現資料範圍是1 1e10的,開4倍的線段樹根本開不下。於是你極其懊惱地只拿了部分分,可能還會因為心情不好而出鍋爆零 逃 所以這裡來講一下離散...
Kmeans演算法及其示例
kmeans是簡單的聚類分析演算法。其常用在資料分析與人工智慧中。簡單說,kmeans演算法就是把乙個集合中的東西分為若干子集,這幾個子集內的元素具有空間相近或者特點相近。做法 1.隨機選取k各中心點,生成對應的k個簇。2.遍歷所有的資料點,依據 距離 將每乙個資料點劃分到最近的中心點所在的簇。3....
K means演算法及其優化
聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。聚類演算法與分類演算法最大的區別是 聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習演算法。在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相...