Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/14/12 15:21:28 (12 years ago)
Author:
sforsten
Message:

#1784: changes have been applied, according to the review comments of mkommend

Location:
branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionDataDescriptor.cs

    r7759 r7805  
    3636    protected abstract int TestPartitionEnd { get; }
    3737
    38     public RegressionProblemData GenerateRegressionData() {
     38    public IRegressionProblemData GenerateRegressionData() {
    3939      Dataset dataset = new Dataset(InputVariables, this.GenerateValues());
    4040
  • branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionInstanceProvider.cs

    r7759 r7805  
    2424namespace HeuristicLab.Problems.Instances.Regression {
    2525  public abstract class ArtificialRegressionInstanceProvider : RegressionInstanceProvider {
    26     public override RegressionProblemData LoadData(IDataDescriptor descriptor) {
     26    public override IRegressionProblemData LoadData(IDataDescriptor descriptor) {
    2727      return ((ArtificialRegressionDataDescriptor)descriptor).GenerateRegressionData();
    2828    }
  • branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/RealWorld/RealWorldInstanceProvider.cs

    r7759 r7805  
    3939    }
    4040
    41     protected override string FileExtension { get { return "RealWorld"; } }
     41    protected override string FileName { get { return "RealWorld"; } }
    4242  }
    4343}
  • branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/RegressionInstanceProvider.cs

    r7759 r7805  
    2323using System.Collections;
    2424using System.Collections.Generic;
     25using System.Globalization;
    2526using System.IO;
    2627using System.Linq;
     
    2930
    3031namespace HeuristicLab.Problems.Instances.Regression {
    31   public abstract class RegressionInstanceProvider : IProblemInstanceProvider<RegressionProblemData> {
    32     public RegressionProblemData LoadData(string path) {
    33       TableFileParser csvFileParser = new TableFileParser();
    34       csvFileParser.Parse(path);
     32  public abstract class RegressionInstanceProvider : IProblemInstanceProvider<IRegressionProblemData> {
    3533
    36       Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
    37       string targetVar = csvFileParser.VariableNames.Last();
    38       IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
     34    public IRegressionProblemData LoadData(string path) {
     35      NumberFormatInfo numberFormat;
     36      DateTimeFormatInfo dateFormat;
     37      char separator;
     38      TableFileParser.DetermineFileFormat(path, out numberFormat, out dateFormat, out separator);
    3939
    40       RegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
     40      IRegressionProblemData regData = LoadData(new FileStream(path, FileMode.Open), numberFormat, dateFormat, separator);
     41
    4142      int pos = path.LastIndexOf('\\');
    4243      if (pos < 0)
     
    4647        regData.Name = path.Substring(pos, path.Length - pos);
    4748      }
     49      return regData;
     50    }
     51
     52    protected IRegressionProblemData LoadData(Stream stream, NumberFormatInfo numberFormat, DateTimeFormatInfo dateFormat, char separator) {
     53      TableFileParser csvFileParser = new TableFileParser();
     54
     55      csvFileParser.Parse(stream, numberFormat, dateFormat, separator);
     56
     57      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
     58      string targetVar = csvFileParser.VariableNames.Last();
     59      IEnumerable<string> allowedInputVars = csvFileParser.VariableNames.Where(x => !x.Equals(targetVar));
     60
     61      RegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar);
    4862
    4963      int trainingPartEnd = csvFileParser.Rows * 2 / 3;
     
    5266      regData.TestPartition.Start = trainingPartEnd;
    5367      regData.TestPartition.End = csvFileParser.Rows;
     68
    5469      return regData;
    5570    }
    5671
    57     public void SaveData(RegressionProblemData instance, string path) {
     72    public void SaveData(IRegressionProblemData instance, string path) {
    5873      StringBuilder strBuilder = new StringBuilder();
    5974
     
    8095
    8196    public abstract IEnumerable<IDataDescriptor> GetDataDescriptors();
    82     public abstract RegressionProblemData LoadData(IDataDescriptor descriptor);
     97    public abstract IRegressionProblemData LoadData(IDataDescriptor descriptor);
    8398
    8499    public abstract string Name { get; }
  • branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionInstanceProvider.cs

    r7759 r7805  
    2222using System;
    2323using System.Collections.Generic;
     24using System.Globalization;
    2425using System.IO;
    2526using System.Linq;
     
    3233  public abstract class ResourceRegressionInstanceProvider : RegressionInstanceProvider {
    3334
    34     protected abstract string FileExtension { get; }
     35    protected abstract string FileName { get; }
    3536
    3637    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
    37       var solutionsArchiveName = GetResourceName(FileExtension + @"\.zip");
     38      var solutionsArchiveName = GetResourceName(FileName + @"\.zip");
    3839      if (!String.IsNullOrEmpty(solutionsArchiveName)) {
    3940        using (var solutionsZipFile = new ZipInputStream(GetType().Assembly.GetManifestResourceStream(solutionsArchiveName))) {
    40           foreach (var entry in GetZipContents(solutionsZipFile).OrderBy(x => x))
     41          IList<string> entries = new List<string>();
     42          ZipEntry curEntry;
     43          while ((curEntry = solutionsZipFile.GetNextEntry()) != null) {
     44            entries.Add(curEntry.Name);
     45          }
     46          foreach (var entry in entries.OrderBy(x => x)) {
    4147            yield return new ResourceRegressionDataDescriptor(Path.GetFileNameWithoutExtension(entry), Description, entry);
     48          }
    4249        }
    4350      }
    4451    }
    4552
    46     public override RegressionProblemData LoadData(IDataDescriptor id) {
     53    public override IRegressionProblemData LoadData(IDataDescriptor id) {
    4754      var descriptor = (ResourceRegressionDataDescriptor)id;
    4855
    49       RegressionProblemData regData = LoadData(GetTempFileForResource(descriptor.ResourceName));
    50       regData.Name = descriptor.Name;
    51       regData.Description = descriptor.Description;
     56      var instanceArchiveName = GetResourceName(FileName + @"\.zip");
     57      using (var instancesZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) {
     58        var entry = instancesZipFile.GetEntry(descriptor.ResourceName);
     59        NumberFormatInfo numberFormat;
     60        DateTimeFormatInfo dateFormat;
     61        char separator;
     62        using (Stream stream = instancesZipFile.GetInputStream(entry)) {
     63          TableFileParser.DetermineFileFormat(stream, out numberFormat, out dateFormat, out separator);
     64        }
    5265
    53       return regData;
     66        IRegressionProblemData regData;
     67        using (Stream stream = instancesZipFile.GetInputStream(entry)) {
     68          regData = LoadData(stream, numberFormat, dateFormat, separator);
     69        }
     70
     71        regData.Name = descriptor.Name;
     72        regData.Description = descriptor.Description;
     73        return regData;
     74      }
    5475    }
    5576
     
    5879              .Where(x => Regex.Match(x, @".*\.Data\." + fileName).Success).SingleOrDefault();
    5980    }
    60 
    61     protected IEnumerable<string> GetZipContents(ZipInputStream zipFile) {
    62       ZipEntry entry;
    63       while ((entry = zipFile.GetNextEntry()) != null) {
    64         yield return entry.Name;
    65       }
    66     }
    67 
    68     private string GetTempFileForResource(string resourceName) {
    69       var instanceArchiveName = GetResourceName(FileExtension + @"\.zip");
    70       using (var instancesZipFile = new ZipFile(GetType().Assembly.GetManifestResourceStream(instanceArchiveName))) {
    71         var entry = instancesZipFile.GetEntry(resourceName);
    72         string path = Path.GetTempFileName();
    73         using (var stream = instancesZipFile.GetInputStream(entry)) {
    74           WriteStreamToTempFile(stream, path);
    75         }
    76         return path;
    77       }
    78     }
    79 
    80     private void WriteStreamToTempFile(Stream stream, string path) {
    81       using (FileStream output = new FileStream(path, FileMode.Create, FileAccess.Write)) {
    82         int cnt = 0;
    83         byte[] buffer = new byte[32 * 1024];
    84         while ((cnt = stream.Read(buffer, 0, buffer.Length)) != 0)
    85           output.Write(buffer, 0, cnt);
    86       }
    87     }
    8881  }
    8982}
  • branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/TrentMcConaghy/TrentMcConaghyInstanceProvider.cs

    r7759 r7805  
    4545    }
    4646
    47     protected override string FileExtension { get { return "TrentMcConaghy"; } }
     47    protected override string FileName { get { return "TrentMcConaghy"; } }
    4848
    49     public override RegressionProblemData LoadData(IDataDescriptor id) {
    50       RegressionProblemData regData = base.LoadData(id);
     49    public override IRegressionProblemData LoadData(IDataDescriptor id) {
     50      IRegressionProblemData regData = base.LoadData(id);
    5151      string targetVar = regData.InputVariables.First().Value;
    5252      IEnumerable<string> allowedInputVars = regData.InputVariables.Where(x => !x.Equals(regData.TargetVariable)).Select(x => x.Value);
Note: See TracChangeset for help on using the changeset viewer.