Changeset 14843 for trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearDiscriminantAnalysis.cs
- Timestamp:
- 04/11/17 15:55:44 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearDiscriminantAnalysis.cs
r14826 r14843 73 73 var doubleVariableNames = allowedInputVariables.Where(dataset.VariableHasType<double>).ToArray(); 74 74 var factorVariableNames = allowedInputVariables.Where(dataset.VariableHasType<string>).ToArray(); 75 double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(dataset,doubleVariableNames.Concat(new string[] { targetVariable }), rows);75 double[,] inputMatrix = dataset.ToArray(doubleVariableNames.Concat(new string[] { targetVariable }), rows); 76 76 77 var factorVariables = AlglibUtil.GetFactorVariableValues(dataset,factorVariableNames, rows);78 double[,] factorMatrix = AlglibUtil.PrepareInputMatrix(dataset,factorVariables, rows);77 var factorVariables = dataset.GetFactorVariableValues(factorVariableNames, rows); 78 var factorMatrix = dataset.ToArray(factorVariables, rows); 79 79 80 80 inputMatrix = factorMatrix.HorzCat(inputMatrix); … … 94 94 if (info < 1) throw new ArgumentException("Error in calculation of linear discriminant analysis solution"); 95 95 96 ISymbolicExpressionTree tree = new SymbolicExpressionTree(new ProgramRootSymbol().CreateTreeNode()); 97 ISymbolicExpressionTreeNode startNode = new StartSymbol().CreateTreeNode(); 98 tree.Root.AddSubtree(startNode); 99 ISymbolicExpressionTreeNode addition = new Addition().CreateTreeNode(); 100 startNode.AddSubtree(addition); 101 102 int col = 0; 103 foreach (var kvp in factorVariables) { 104 var varName = kvp.Key; 105 foreach (var cat in kvp.Value) { 106 BinaryFactorVariableTreeNode vNode = 107 (BinaryFactorVariableTreeNode)new HeuristicLab.Problems.DataAnalysis.Symbolic.BinaryFactorVariable().CreateTreeNode(); 108 vNode.VariableName = varName; 109 vNode.VariableValue = cat; 110 vNode.Weight = w[col]; 111 addition.AddSubtree(vNode); 112 col++; 113 } 114 } 115 foreach (string column in doubleVariableNames) { 116 VariableTreeNode vNode = (VariableTreeNode)new HeuristicLab.Problems.DataAnalysis.Symbolic.Variable().CreateTreeNode(); 117 vNode.VariableName = column; 118 vNode.Weight = w[col]; 119 addition.AddSubtree(vNode); 120 col++; 121 } 96 var nFactorCoeff = factorMatrix.GetLength(1); 97 var tree = LinearModelToTreeConverter.CreateTree(factorVariables, w.Take(nFactorCoeff).ToArray(), 98 doubleVariableNames, w.Skip(nFactorCoeff).Take(doubleVariableNames.Length).ToArray()); 122 99 123 100 var model = CreateDiscriminantFunctionModel(tree, new SymbolicDataAnalysisExpressionTreeLinearInterpreter(), problemData, rows);
Note: See TracChangeset
for help on using the changeset viewer.