2012-06-16 34 views
0

假設我有一個包含10個類的數據集。每個類包含3D 3點:C#線性判別分析Alglib

Class 1: (1,2,3),(4,5,6),(7,8,9) 
Class 2: (2,3,4),(5,6,7),(8,9,10) 
. 
. 
Class 10: (10,15,20),(10,11,19),(4,8,9) 

我怎樣才能確定是否X類所屬的類來對一個以上使用Alglib LDA(或任何其他免費LDA庫)?

示例代碼將不勝感激。

+0

任何代碼,顯示你有什麼到目前爲止已經試過也將被讚賞。 –

+0

甚至無法開始編寫它。直到我自己寫了課,我才瞭解PCA,並且它運行良好。雖然我理解LDA的基本知識,但我無法弄清楚如何確定一個類到另一個類的所有物的邏輯。 PCA的比較結果與EUCLIDEAN DISTANCE的大小有關。對於LDA,它與該類的投影具有最高特徵值的向量有關。 – Igor

回答

3

一段時間後,我終於想通了:

static public double[,] Test() 
    { 
     // This example is for points in 3D. 
     // The forth variable is the class label. In this case 2 classes: 0 and 1. 
     double[,] xy = new double[,] 
     { 
     { 4,2,1, 0 }, { 2,4,2, 0 }, { 2,3,3, 0 }, { 3,6,4, 0 }, { 4,4,5, 0 }, 
     { 9,10,10, 1 }, { 6,8,11, 1 }, { 9,5,12, 1 }, { 8,7,9, 1 }, { 10,8,10, 1 } 
     }; 

     int NPoints = 10; 
     int NVars = 3; // 1 for 1 dimension, 2 for 2D and so on... 
     int NClasses = 2; 

     int info = 0; 
     double[,] w = new double[0, 0]; 

     alglib.lda.fisherldan(xy, NPoints, NVars, NClasses, ref info, ref w); 

     return w; // The projection vector/s. 
    } 
+0

嗨。你能解釋一下這裏發生了什麼嗎?我使用該庫的C++版本來嘗試和分析6個問題回答(1到7之間的答案)並將它們匹配到5個集合/類。我真的堅持所以任何幫助將不勝感激。 –

+0

HI @RASS。剛剛看到你的問題。我希望你現在已經明白了。如果不是,請不要猶豫,再問一次。 – Igor

+0

Hi @Igor。不幸的是,沒有運氣,說實話我沒有能夠花太多時間在它上面。我正在開發一個項目,用戶必須回答6個問題,並給出1到7之間的每個問題範圍的答案。然後我有4個特徵,每個特徵分配一個值並使用用戶的答案和一組漁民lda常數必須工作把最適合用戶的特性。我不知道你是否可以解決這個問題?非常感謝。 –