Advertisement
Guest User

MultiClass.cs

a guest
Jul 12th, 2014
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.42 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Globalization;
  5. using System.IO;
  6.  
  7. namespace MultiClass
  8. {
  9.     class Program
  10.     {
  11.         static Dictionary<double,string> ranges = new Dictionary<double,string>();
  12.         static void Main(string[] args)
  13.         {
  14.  
  15.             Console.WriteLine("starting conversion to multiclass");
  16.             training = convert2MultiClass(
  17.                 ConfigurationManager.AppSettings["training_path"],
  18.                 ConfigurationManager.AppSettings["multiclass_training_path"]
  19.                 );
  20.             Console.WriteLine("program quits");
  21.         }
  22.         class Event
  23.         {
  24.             internal string features;
  25.             internal double weight;
  26.             internal string label;
  27.         }
  28.         static Dictionary<int, Event> training;
  29.         static Dictionary<int, Event> convert2MultiClass(string training_path, string multiclass_training_path)
  30.         {
  31.             Dictionary<int, Event> ret_val = new Dictionary<int, Event>();
  32.             string first_line;
  33.             using (StreamReader sr = new StreamReader(training_path))
  34.             {
  35.                 first_line = sr.ReadLine();
  36.                 int line = 0;
  37.                 string curr_line;
  38.                 bool end_training=false;
  39.                 while (!end_training)
  40.                 {
  41.                     curr_line = sr.ReadLine();
  42.                     if (curr_line == null || curr_line.Trim().Length == 0)
  43.                     {
  44.                         end_training = true;
  45.                     }
  46.                     else
  47.                     {
  48.                         Event evt = new Event();
  49.                         string[] fields = curr_line.Split(',');
  50.                         evt.features = string.Join(",",fields,1,fields.Length-3);
  51.                         if (!double.TryParse(fields[fields.Length-2], out evt.weight))
  52.                         {
  53.                             Console.WriteLine("wrong weight for line " + line.ToString());
  54.                         }
  55.                         evt.label = fields[fields.Length - 1];
  56.                         if (evt.label.Equals("s"))
  57.                         {
  58.                             if (ranges.ContainsKey(evt.weight))
  59.                             {
  60.                                 evt.label = ranges[evt.weight];
  61.                             }
  62.                             else
  63.                             {
  64.                                 string new_label = (ranges.Count + 1).ToString();
  65.                                 ranges.Add(evt.weight, new_label);
  66.                                 evt.label = new_label;
  67.                             }
  68.                         }
  69.                         else
  70.                         {
  71.                             evt.label = "0";
  72.                         }
  73.                         ret_val[line++] = evt;
  74.                     }
  75.  
  76.                 }
  77.             }
  78.             using (StreamWriter sw = new StreamWriter(multiclass_training_path))
  79.             {
  80.                 sw.WriteLine(first_line);
  81.                 for (int i = 0; i < 250000; i++)
  82.             {
  83.                     sw.WriteLine((100000 + i).ToString() + ","+ret_val[i].features
  84.                         + "," +ret_val[i].weight.ToString(CultureInfo.InvariantCulture)
  85.                         + "," + ret_val[i].label
  86.                         );
  87.             }
  88.             }
  89.             return ret_val;
  90.         }
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement