static EvaluatedData Evaluate(Trained[,] trained, TrainingData refineData, int have) { if (refineData.level != have) return null; EvaluatedData e = new EvaluatedData() { level = refineData.level, Label = refineData.Label, DocCount = refineData.DocCount }; for (int stop = 0; stop <= have; stop++) { if (trained[stop, have] == null) e.Score[stop] = float.MaxValue; else e.Score[stop] = trained[stop, have].predictor.Predict(new TrainingData(refineData, stop)).Score; } return e; }
public TrainingData(TrainingData b, int level) { this.Label = b.Label; this.DocCount = b.DocCount; this.l1_0 = b.l1_0; this.l2_0 = b.l2_0; this.l1_1 = b.l1_1; if (level >= 1) { this.l2_1 = b.l2_1; this.dl2_1 = b.dl2_1; } this.l1_2 = b.l1_2; if (level >= 2) { this.l2_2 = b.l2_2; this.dl2_2 = b.dl2_2; } this.l1_3 = b.l1_3; if (level >= 3) { this.l2_3 = b.l2_3; this.dl2_3 = b.dl2_3; } this.l1_4 = b.l1_4; if (level >= 4) { this.l2_4 = b.l2_4; this.dl2_4 = b.dl2_4; } this.l1_5 = b.l1_5; if (level >= 5) { this.l2_5 = b.l2_5; this.dl2_5 = b.dl2_5; } }
static void ReadRawData() { using (TextReader tr = new StreamReader(@"raas.csv")) { string line; int cnt = 0; while (null != (line = tr.ReadLine())) { string[] parts = line.Split(','); if (parts.Length >= 3) { cnt++; TrainingData d = new TrainingData(); d.Label = float.Parse(parts[0]); d.DocCount = float.Parse(parts[1]); d.l1_0 = float.Parse(parts[2]); d.l2_0 = float.Parse(parts[3]); d.level = 0; if (parts.Length >= 6) { d.l1_1 = float.Parse(parts[4]); d.dl1_1 = d.l1_1 - d.l1_0; d.l2_1 = float.Parse(parts[5]); d.dl2_1 = d.l2_1 - d.l2_0; d.level = 1; } else { d.l1_1 = -5; } if (parts.Length >= 8) { d.l1_2 = float.Parse(parts[TrainingData.Levels]); d.dl1_2 = d.l1_2 - d.l1_1; d.l2_2 = float.Parse(parts[7]); d.dl2_2 = d.l2_2 - d.l2_1; d.level = 2; } else { d.l1_2 = -5; } if (parts.Length >= 10) { d.l1_3 = float.Parse(parts[8]); d.dl1_3 = d.l1_3 - d.l1_2; d.l2_3 = float.Parse(parts[9]); d.dl2_3 = d.l2_3 - d.l2_2; d.level = 3; } else { d.l1_3 = -5; } if (parts.Length >= 12) { d.l1_4 = float.Parse(parts[10]); d.dl1_4 = d.l1_4 - d.l1_3; d.l2_4 = float.Parse(parts[11]); d.dl2_4 = d.l2_4 - d.l2_3; d.level = 4; } else { d.l1_4 = -5; } if (parts.Length >= 14) { d.l1_5 = float.Parse(parts[12]); d.dl1_5 = d.l1_5 - d.l1_4; d.l2_5 = float.Parse(parts[13]); d.dl2_5 = d.l2_5 - d.l2_4; d.level = 5; } else { d.l1_5 = -5; } if (cnt % 3 == 0) TrainingData0.Add(d); else if (cnt % 3 == 1) TrainingData1.Add(d); else if (cnt % 3 == 2) TrainingData2.Add(d); } } } }