2014-04-07 76 views
0

我想用LDA(線性判別分析)分類器對我的數據進行分類。我的測試數據大小爲:用LDA分類的matlab錯誤

1 12 240 64 

而且我的訓練數據大小爲:

85 12 240 64 

我的標籤尺寸是:

1 85 

爲此我用這樣的分類MATLAB代碼:

class = classify(Test_data, Train_data, label, 'linear'); 

但它給我犯錯或:

The length of GROUP must equal the number of rows in TRAINING.

我不知道爲什麼給我這個錯誤,因爲你看,我的訓練數據行數爲85,同我label(GROUP)長度。有人能告訴我我做錯了什麼嗎?

+0

這個問題似乎是題外話題,因爲它是關於特定於Matlab的錯誤消息的原因;它似乎是一個Matlab語法問題,而不是一個統計問題。 –

+0

什麼是LDA? – ttnphns

+0

@ ttnphns LDA或線性判別分析和相關的Fisher線性判別分析是在統計學,模式識別和機器學習中使用的方法,以找到表徵或分離兩個或更多類別的對象或事件的特徵的線性組合。 – maia

回答

1

LDA適用於行;注意文檔「培訓和小組必須具有相同的行數」。

您的標籤當前在列中指定。以下內容將解決您的錯誤:

class = classify(Test_data,Train_data,label','linear'); 

請注意'後標籤轉置爲行。

+0

謝謝@亞歷。它的工作,但現在它給了我另一個錯誤,如「樣本和培訓必須有相同數量的列」,但我相信都有相同的列號,爲什麼劑量它重要,如果我寫標籤或標籤,因爲我想什麼問題是標籤的長度而不是行數或列數。我無法理解這一點。 – maia

+0

沒問題!一般來說,我認爲你需要仔細研究變量的大小,並理解列向量和行向量之間的差異。行列號*絕對*重要! 在這裏看到:http://www.mathworks.com/help/stats/classify.html 類=分類(樣本,訓練組) 一般來說,尺寸應該是: 尺寸(樣品)== (num_samples,num_variables), 大小(訓練)==(num_samples,num_variables), 大小(訓練)==(num_samples,1)。 目前你的矩陣太大了(4d對2d),所以仔細想想你的數據結構如何。祝你好運! – Alex

+0

謝謝@ Alex.i發現matlab只支持2d數據,所以我將我所有的3d和4d數據轉換爲2d矩陣,並且在您的幫助下我終於解決了我的問題。 – maia