Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/06/12 09:52:52 (12 years ago)
Author:
ascheibe
Message:

#1861 merged changes from trunk into branch

Location:
branches/HeuristicLab.Mono
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Mono

  • branches/HeuristicLab.Mono/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Classification/CSV/ClassifiactionCSVInstanceProvider.cs

    r8211 r8585  
    2222using System;
    2323using System.Collections.Generic;
     24using System.Globalization;
    2425using System.IO;
    2526using System.Linq;
    2627using System.Text;
     28using HeuristicLab.Common;
    2729using HeuristicLab.Problems.DataAnalysis;
    2830
     
    6163
    6264      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
    63       string targetVar = csvFileParser.VariableNames.Where(x => dataset.DoubleVariables.Contains(x)).Last();
    64       IEnumerable<string> allowedInputVars = dataset.DoubleVariables.Where(x => !x.Equals(targetVar));
     65      string targetVar = dataset.DoubleVariables.Last();
    6566
    66       ClassificationProblemData claData = new ClassificationProblemData(dataset, allowedInputVars, targetVar);
    67 
    68       int trainingPartEnd = csvFileParser.Rows * 2 / 3;
    69       claData.TrainingPartition.Start = 0;
    70       claData.TrainingPartition.End = trainingPartEnd;
    71       claData.TestPartition.Start = trainingPartEnd;
    72       claData.TestPartition.End = csvFileParser.Rows;
    73       int pos = path.LastIndexOf('\\');
    74       if (pos < 0)
    75         claData.Name = path;
    76       else {
    77         pos++;
    78         claData.Name = path.Substring(pos, path.Length - pos);
     67      // turn of input variables that are constant in the training partition
     68      var allowedInputVars = new List<string>();
     69      var trainingIndizes = Enumerable.Range(0, (csvFileParser.Rows * 2) / 3);
     70      foreach (var variableName in dataset.DoubleVariables) {
     71        if (dataset.GetDoubleValues(variableName, trainingIndizes).Range() > 0 &&
     72          variableName != targetVar)
     73          allowedInputVars.Add(variableName);
    7974      }
    8075
    81       return claData;
     76      ClassificationProblemData classificationData = new ClassificationProblemData(dataset, allowedInputVars, targetVar);
     77
     78      int trainingPartEnd = trainingIndizes.Last();
     79      classificationData.TrainingPartition.Start = trainingIndizes.First();
     80      classificationData.TrainingPartition.End = trainingPartEnd;
     81      classificationData.TestPartition.Start = trainingPartEnd;
     82      classificationData.TestPartition.End = csvFileParser.Rows;
     83
     84      classificationData.Name = Path.GetFileName(path);
     85
     86      return classificationData;
    8287    }
    8388
     
    8691    }
    8792    public override void ExportData(IClassificationProblemData instance, string path) {
    88       StringBuilder strBuilder = new StringBuilder();
     93      var strBuilder = new StringBuilder();
    8994
    9095      foreach (var variable in instance.InputVariables) {
    91         strBuilder.Append(variable + ";");
     96        strBuilder.Append(variable + CultureInfo.CurrentCulture.TextInfo.ListSeparator);
    9297      }
    93       strBuilder.Remove(strBuilder.Length - 1, 1);
     98      strBuilder.Remove(strBuilder.Length - CultureInfo.CurrentCulture.TextInfo.ListSeparator.Length, CultureInfo.CurrentCulture.TextInfo.ListSeparator.Length);
    9499      strBuilder.AppendLine();
    95100
    96       Dataset dataset = instance.Dataset;
     101      var dataset = instance.Dataset;
    97102
    98103      for (int i = 0; i < dataset.Rows; i++) {
    99104        for (int j = 0; j < dataset.Columns; j++) {
    100           strBuilder.Append(dataset.GetValue(i, j) + ";");
     105          if (j > 0) strBuilder.Append(CultureInfo.CurrentCulture.TextInfo.ListSeparator);
     106          strBuilder.Append(dataset.GetValue(i, j));
    101107        }
    102         strBuilder.Remove(strBuilder.Length - 1, 1);
    103108        strBuilder.AppendLine();
    104109      }
    105110
    106       using (StreamWriter writer = new StreamWriter(path)) {
     111      using (var writer = new StreamWriter(path)) {
    107112        writer.Write(strBuilder);
    108113      }
Note: See TracChangeset for help on using the changeset viewer.