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/Regression/CSV/RegressionCSVInstanceProvider.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
     
    5961
    6062      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
    61       string targetVar = csvFileParser.VariableNames.Where(x => dataset.DoubleVariables.Contains(x)).Last();
     63      string targetVar = dataset.DoubleVariables.Last();
    6264
    63       IEnumerable<string> allowedInputVars = dataset.DoubleVariables.Where(x => !x.Equals(targetVar));
     65      // turn of input variables that are constant in the training partition
     66      var allowedInputVars = new List<string>();
     67      var trainingIndizes = Enumerable.Range(0, (csvFileParser.Rows * 2) / 3);
     68      foreach (var variableName in dataset.DoubleVariables) {
     69        if (dataset.GetDoubleValues(variableName, trainingIndizes).Range() > 0 &&
     70          variableName != targetVar)
     71          allowedInputVars.Add(variableName);
     72      }
    6473
    65       IRegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
     74      IRegressionProblemData regressionData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
    6675
    67       int trainingPartEnd = csvFileParser.Rows * 2 / 3;
    68       regData.TrainingPartition.Start = 0;
    69       regData.TrainingPartition.End = trainingPartEnd;
    70       regData.TestPartition.Start = trainingPartEnd;
    71       regData.TestPartition.End = csvFileParser.Rows;
     76      var trainingPartEnd = trainingIndizes.Last();
     77      regressionData.TrainingPartition.Start = trainingIndizes.First();
     78      regressionData.TrainingPartition.End = trainingPartEnd;
     79      regressionData.TestPartition.Start = trainingPartEnd;
     80      regressionData.TestPartition.End = csvFileParser.Rows;
    7281
    73       int pos = path.LastIndexOf('\\');
    74       if (pos < 0)
    75         regData.Name = path;
    76       else {
    77         pos++;
    78         regData.Name = path.Substring(pos, path.Length - pos);
    79       }
    80       return regData;
     82      regressionData.Name = Path.GetFileName(path);
     83
     84      return regressionData;
    8185    }
    8286
     
    8589    }
    8690    public override void ExportData(IRegressionProblemData instance, string path) {
    87       StringBuilder strBuilder = new StringBuilder();
     91      var strBuilder = new StringBuilder();
    8892
    8993      foreach (var variable in instance.InputVariables) {
    90         strBuilder.Append(variable + ";");
     94        strBuilder.Append(variable + CultureInfo.CurrentCulture.TextInfo.ListSeparator);
    9195      }
    92       strBuilder.Remove(strBuilder.Length - 1, 1);
     96      strBuilder.Remove(strBuilder.Length - CultureInfo.CurrentCulture.TextInfo.ListSeparator.Length, CultureInfo.CurrentCulture.TextInfo.ListSeparator.Length);
    9397      strBuilder.AppendLine();
    9498
    95       Dataset dataset = instance.Dataset;
     99      var dataset = instance.Dataset;
    96100
    97101      for (int i = 0; i < dataset.Rows; i++) {
    98102        for (int j = 0; j < dataset.Columns; j++) {
    99           strBuilder.Append(dataset.GetValue(i, j) + ";");
     103          if (j > 0) strBuilder.Append(CultureInfo.CurrentCulture.TextInfo.ListSeparator);
     104          strBuilder.Append(dataset.GetValue(i, j));
    100105        }
    101         strBuilder.Remove(strBuilder.Length - 1, 1);
    102106        strBuilder.AppendLine();
    103107      }
    104108
    105       using (StreamWriter writer = new StreamWriter(path)) {
     109      using (var writer = new StreamWriter(path)) {
    106110        writer.Write(strBuilder);
    107111      }
Note: See TracChangeset for help on using the changeset viewer.