Changeset 7805 for branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4
- Timestamp:
- 05/14/12 15:21:28 (12 years ago)
- 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 36 36 protected abstract int TestPartitionEnd { get; } 37 37 38 public RegressionProblemData GenerateRegressionData() {38 public IRegressionProblemData GenerateRegressionData() { 39 39 Dataset dataset = new Dataset(InputVariables, this.GenerateValues()); 40 40 -
branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ArtificialRegressionInstanceProvider.cs
r7759 r7805 24 24 namespace HeuristicLab.Problems.Instances.Regression { 25 25 public abstract class ArtificialRegressionInstanceProvider : RegressionInstanceProvider { 26 public override RegressionProblemData LoadData(IDataDescriptor descriptor) {26 public override IRegressionProblemData LoadData(IDataDescriptor descriptor) { 27 27 return ((ArtificialRegressionDataDescriptor)descriptor).GenerateRegressionData(); 28 28 } -
branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/RealWorld/RealWorldInstanceProvider.cs
r7759 r7805 39 39 } 40 40 41 protected override string File Extension{ get { return "RealWorld"; } }41 protected override string FileName { get { return "RealWorld"; } } 42 42 } 43 43 } -
branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/RegressionInstanceProvider.cs
r7759 r7805 23 23 using System.Collections; 24 24 using System.Collections.Generic; 25 using System.Globalization; 25 26 using System.IO; 26 27 using System.Linq; … … 29 30 30 31 namespace 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> { 35 33 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); 39 39 40 RegressionProblemData regData = new RegressionProblemData(dataset, allowedInputVars, targetVar); 40 IRegressionProblemData regData = LoadData(new FileStream(path, FileMode.Open), numberFormat, dateFormat, separator); 41 41 42 int pos = path.LastIndexOf('\\'); 42 43 if (pos < 0) … … 46 47 regData.Name = path.Substring(pos, path.Length - pos); 47 48 } 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); 48 62 49 63 int trainingPartEnd = csvFileParser.Rows * 2 / 3; … … 52 66 regData.TestPartition.Start = trainingPartEnd; 53 67 regData.TestPartition.End = csvFileParser.Rows; 68 54 69 return regData; 55 70 } 56 71 57 public void SaveData( RegressionProblemData instance, string path) {72 public void SaveData(IRegressionProblemData instance, string path) { 58 73 StringBuilder strBuilder = new StringBuilder(); 59 74 … … 80 95 81 96 public abstract IEnumerable<IDataDescriptor> GetDataDescriptors(); 82 public abstract RegressionProblemData LoadData(IDataDescriptor descriptor);97 public abstract IRegressionProblemData LoadData(IDataDescriptor descriptor); 83 98 84 99 public abstract string Name { get; } -
branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/ResourceRegressionInstanceProvider.cs
r7759 r7805 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Globalization; 24 25 using System.IO; 25 26 using System.Linq; … … 32 33 public abstract class ResourceRegressionInstanceProvider : RegressionInstanceProvider { 33 34 34 protected abstract string File Extension{ get; }35 protected abstract string FileName { get; } 35 36 36 37 public override IEnumerable<IDataDescriptor> GetDataDescriptors() { 37 var solutionsArchiveName = GetResourceName(File Extension+ @"\.zip");38 var solutionsArchiveName = GetResourceName(FileName + @"\.zip"); 38 39 if (!String.IsNullOrEmpty(solutionsArchiveName)) { 39 40 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)) { 41 47 yield return new ResourceRegressionDataDescriptor(Path.GetFileNameWithoutExtension(entry), Description, entry); 48 } 42 49 } 43 50 } 44 51 } 45 52 46 public override RegressionProblemData LoadData(IDataDescriptor id) {53 public override IRegressionProblemData LoadData(IDataDescriptor id) { 47 54 var descriptor = (ResourceRegressionDataDescriptor)id; 48 55 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 } 52 65 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 } 54 75 } 55 76 … … 58 79 .Where(x => Regex.Match(x, @".*\.Data\." + fileName).Success).SingleOrDefault(); 59 80 } 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 }88 81 } 89 82 } -
branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Problems.Instances.Regression/3.4/TrentMcConaghy/TrentMcConaghyInstanceProvider.cs
r7759 r7805 45 45 } 46 46 47 protected override string File Extension{ get { return "TrentMcConaghy"; } }47 protected override string FileName { get { return "TrentMcConaghy"; } } 48 48 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); 51 51 string targetVar = regData.InputVariables.First().Value; 52 52 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.