2017-01-20 42 views
-1

我正在研究kmeans集羣。 我有3d數據集作爲no.days,頻率,食物 - >日是通過手段&標準偏差(標準差)或更好地說標準化。它給我的範圍[-2至14]機器學習,標稱數據標準化

- >頻率和食物是我的數據集中的NOMINAL數據通過DIVIDE BY MAX(x/max(x))進行歸一化,這使得範圍[0到1]

問題是kmeans只考慮日軸進行分組,因爲這個軸有明顯的間隙b/w點,並且幾乎忽略了頻率和食物中的另外兩個(我認爲是因爲可忽略不計的差距頻率和食物變暗)。

如果我只在日軸上應用kmeans(1D),我會得到與我在3D上應用的完全相似的結果(天,頻率,食物)。

「之前,我做了X/MAX(X),以及對天,但不能接受」

,所以我想知道有沒有辦法正常化頻率和食品的另外兩個標稱數據,我們可以得到基於DAY軸的公平縮放。

食品=> 1,2,3 頻率=> 1-36

+0

你爲什麼沒有正常化所有的東西? – Mornor

+0

我規範化了每一件事情......因爲我的定量數據和平均值和標準偏差都有意義,所以我使用標準化了......但是對於頻率和食品來說它沒有意義,因爲它們是我的分類數據。 –

回答

0

標準化的重點不僅僅是爲了讓數值變小。

其目的是具有可比較的值範圍 - 這對於不同單位的屬性來說確實很難,並且對於名義數據來說可能是不可能的。

對於您的數據類型,k-means可能是最差的選擇,因爲k-means 依靠在連續的值上工作。如果你有標稱值,它通常很容易卡住。所以我的主要建議是不使用k-means

對於數據上的k-means to wprk,每個屬性的差異1必須相同。所以1天差=食物q和食物2之間的差異。而且因爲k-均值是基於平方誤差,所以食物1與食物3的差異是食物對食物2的4倍。

除非你有上述屬性,不要使用k-means。

0

你可以嘗試使用值差度量,VDM(或任何變體),以幾乎轉換你遇到的每個標稱類屬性有效數字表示。之後,您可以像往常一樣將標準化應用於整個數據集。

的原始定義是在這裏:

http://axon.cs.byu.edu/~randy/jair/wilson1.html

雖然它應該很容易找到其他地方的每一個共同的語言實現。

N.B.對於有序的名義屬性,比如你的'頻率',大部分時間只需將它們表示爲整數即可。