資料離散化及其KMeans演算法實現的理論理解

2021-10-23 05:06:08 字數 1166 閱讀 2714

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演算法及其優化

聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。聚類演算法與分類演算法最大的區別是 聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習演算法。在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相...