Changeset 6760 for branches/PersistenceSpeedUp/HeuristicLab.Problems.DataAnalysis.Views/3.4/Classification/ClassificationSolutionConfusionMatrixView.cs
- Timestamp:
- 09/14/11 13:59:25 (13 years ago)
- Location:
- branches/PersistenceSpeedUp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PersistenceSpeedUp
- Property svn:ignore
-
old new 12 12 *.psess 13 13 *.vsp 14 *.docstates
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/PersistenceSpeedUp/HeuristicLab.Problems.DataAnalysis.Views/3.4/Classification/ClassificationSolutionConfusionMatrixView.cs
r5975 r6760 24 24 using System.Linq; 25 25 using System.Windows.Forms; 26 using HeuristicLab.Core.Views;27 26 using HeuristicLab.MainForm; 28 27 using HeuristicLab.MainForm.WindowsForms; … … 31 30 [View("Confusion Matrix")] 32 31 [Content(typeof(IClassificationSolution))] 33 public partial class ClassificationSolutionConfusionMatrixView : ItemView, IClassificationSolutionEvaluationView {32 public partial class ClassificationSolutionConfusionMatrixView : DataAnalysisSolutionEvaluationView { 34 33 private const string TrainingSamples = "Training"; 35 34 private const string TestSamples = "Test"; … … 78 77 dataGridView.ColumnCount = 1; 79 78 } else { 80 dataGridView.ColumnCount = Content.ProblemData.Classes ;81 dataGridView.RowCount = Content.ProblemData.Classes ;79 dataGridView.ColumnCount = Content.ProblemData.Classes + 1; 80 dataGridView.RowCount = Content.ProblemData.Classes + 1; 82 81 83 82 int i = 0; … … 87 86 i++; 88 87 } 88 dataGridView.Columns[i].HeaderText = "Actual not classified"; 89 dataGridView.Rows[i].HeaderCell.Value = "Predicted not classified"; 90 89 91 dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.ColumnHeader); 90 92 dataGridView.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders); … … 100 102 if (Content == null) return; 101 103 102 double[,] confusionMatrix = new double[Content.ProblemData.Classes , Content.ProblemData.Classes];104 double[,] confusionMatrix = new double[Content.ProblemData.Classes + 1, Content.ProblemData.Classes + 1]; 103 105 IEnumerable<int> rows; 104 106 107 double[] predictedValues; 105 108 if (cmbSamples.SelectedItem.ToString() == TrainingSamples) { 106 109 rows = Content.ProblemData.TrainingIndizes; 110 predictedValues = Content.EstimatedTrainingClassValues.ToArray(); 107 111 } else if (cmbSamples.SelectedItem.ToString() == TestSamples) { 108 112 rows = Content.ProblemData.TestIndizes; 113 predictedValues = Content.EstimatedTestClassValues.ToArray(); 109 114 } else throw new InvalidOperationException(); 115 116 double[] targetValues = Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.TargetVariable, rows).ToArray(); 110 117 111 118 Dictionary<double, int> classValueIndexMapping = new Dictionary<double, int>(); … … 116 123 } 117 124 118 double[] targetValues = Content.ProblemData.Dataset.GetEnumeratedVariableValues(Content.ProblemData.TargetVariable, rows).ToArray();119 double[] predictedValues = Content.GetEstimatedClassValues(rows).ToArray();120 121 125 for (int i = 0; i < targetValues.Length; i++) { 122 126 double targetValue = targetValues[i]; 123 127 double predictedValue = predictedValues[i]; 124 int targetIndex = classValueIndexMapping[targetValue]; 125 int predictedIndex = classValueIndexMapping[predictedValue]; 128 int targetIndex; 129 int predictedIndex; 130 if (!classValueIndexMapping.TryGetValue(targetValue, out targetIndex)) { 131 targetIndex = Content.ProblemData.Classes; 132 } 133 if (!classValueIndexMapping.TryGetValue(predictedValue, out predictedIndex)) { 134 predictedIndex = Content.ProblemData.Classes; 135 } 126 136 127 137 confusionMatrix[predictedIndex, targetIndex] += 1;
Note: See TracChangeset
for help on using the changeset viewer.