2012-06-16 37 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常数必须工作把最适合用户的特性。我不知道你是否可以解决这个问题?非常感谢。 –