Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.3/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.3/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.3/HeuristicLabAlgorithmsDataAnalysisPlugin.cs.frame	(revision 6195)
@@ -26,5 +26,5 @@
   /// Plugin class for HeuristicLab.Algorithms.DataAnalysis plugin.
   /// </summary>
-  [Plugin("HeuristicLab.Algorithms.DataAnalysis", "3.3.3.$WCREV$")]
+  [Plugin("HeuristicLab.Algorithms.DataAnalysis", "3.3.4.$WCREV$")]
   [PluginFile("HeuristicLab.Algorithms.DataAnalysis-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.3/Properties/AssemblyInfo.frame
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.3/Properties/AssemblyInfo.frame	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.3/Properties/AssemblyInfo.frame	(revision 6195)
@@ -53,3 +53,3 @@
 // by using the '*' as shown below:
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.3.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.4.$WCREV$")]
Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs	(revision 6195)
@@ -373,7 +373,35 @@
       foreach (IResult result in ExtractAndAggregateResults<PercentValue>(resultCollections))
         results.Add(result.Name, result.Value);
-
+      foreach (IResult result in ExtractAndAggregateRegressionSolutions(resultCollections)) {
+        results.Add(result.Name, result.Value);
+      }
       results.Add("Execution Time", new TimeSpanValue(this.ExecutionTime));
       results.Add("CrossValidation Folds", new RunCollection(runs));
+    }
+
+    private IEnumerable<IResult> ExtractAndAggregateRegressionSolutions(IEnumerable<KeyValuePair<string, IItem>> resultCollections) {
+      Dictionary<string, List<IRegressionSolution>> resultSolutions = new Dictionary<string, List<IRegressionSolution>>();
+      foreach (var result in resultCollections) {
+        var regressionSolution = result.Value as IRegressionSolution;
+        if (regressionSolution != null) {
+          if (resultSolutions.ContainsKey(result.Key)) {
+            resultSolutions[result.Key].Add(regressionSolution);
+          } else {
+            resultSolutions.Add(result.Key, new List<IRegressionSolution>() { regressionSolution });
+          }
+        }
+      }
+      List<IResult> aggregatedResults = new List<IResult>();
+      foreach (KeyValuePair<string, List<IRegressionSolution>> solutions in resultSolutions) {
+        var problemDataClone = (IRegressionProblemData)Problem.ProblemData.Clone();
+        problemDataClone.TrainingPartition.Start = SamplesStart.Value; problemDataClone.TrainingPartition.End = SamplesEnd.Value;
+        problemDataClone.TestPartition.Start = SamplesStart.Value; problemDataClone.TestPartition.End = SamplesEnd.Value;
+        var ensembleSolution = new RegressionEnsembleSolution(solutions.Value.Select(x => x.Model), problemDataClone,
+          solutions.Value.Select(x => x.ProblemData.TrainingPartition),
+          solutions.Value.Select(x => x.ProblemData.TestPartition));
+
+        aggregatedResults.Add(new Result(solutions.Key, ensembleSolution));
+      }
+      return aggregatedResults;
     }
 
Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearDiscriminantAnalysis.cs
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearDiscriminantAnalysis.cs	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearDiscriminantAnalysis.cs	(revision 6195)
@@ -68,7 +68,5 @@
       string targetVariable = problemData.TargetVariable;
       IEnumerable<string> allowedInputVariables = problemData.AllowedInputVariables;
-      int samplesStart = problemData.TrainingPartition.Start;
-      int samplesEnd = problemData.TrainingPartition.End;
-      IEnumerable<int> rows = Enumerable.Range(samplesStart, samplesEnd - samplesStart);
+      IEnumerable<int> rows = problemData.TrainingIndizes;
       int nClasses = problemData.ClassNames.Count();
       double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(dataset, allowedInputVariables.Concat(new string[] { targetVariable }), rows);
Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearRegression.cs
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearRegression.cs	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearRegression.cs	(revision 6195)
@@ -72,7 +72,5 @@
       string targetVariable = problemData.TargetVariable;
       IEnumerable<string> allowedInputVariables = problemData.AllowedInputVariables;
-      int samplesStart = problemData.TrainingPartition.Start;
-      int samplesEnd = problemData.TrainingPartition.End;
-      IEnumerable<int> rows = Enumerable.Range(samplesStart, samplesEnd - samplesStart);
+      IEnumerable<int> rows = problemData.TrainingIndizes;
       double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(dataset, allowedInputVariables.Concat(new string[] { targetVariable }), rows);
       if (inputMatrix.Cast<double>().Any(x => double.IsNaN(x) || double.IsInfinity(x)))
Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorClassification.cs
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorClassification.cs	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorClassification.cs	(revision 6195)
@@ -122,7 +122,5 @@
       Dataset dataset = problemData.Dataset;
       string targetVariable = problemData.TargetVariable;
-      int start = problemData.TrainingPartition.Start;
-      int end = problemData.TrainingPartition.End;
-      IEnumerable<int> rows = Enumerable.Range(start, end - start);
+      IEnumerable<int> rows = problemData.TrainingIndizes;
 
       //extract SVM parameters from scope and set them
Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs	(revision 6195)
@@ -130,7 +130,5 @@
       Dataset dataset = problemData.Dataset;
       string targetVariable = problemData.TargetVariable;
-      int start = problemData.TrainingPartition.Start;
-      int end = problemData.TrainingPartition.End;
-      IEnumerable<int> rows = Enumerable.Range(start, end - start);
+      IEnumerable<int> rows = problemData.TrainingIndizes;
 
       //extract SVM parameters from scope and set them
Index: branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/kMeans/KMeansClustering.cs
===================================================================
--- branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/kMeans/KMeansClustering.cs	(revision 6011)
+++ branches/histogram/HeuristicLab.Algorithms.DataAnalysis/3.4/kMeans/KMeansClustering.cs	(revision 6195)
@@ -85,7 +85,5 @@
       Dataset dataset = problemData.Dataset;
       IEnumerable<string> allowedInputVariables = problemData.AllowedInputVariables;
-      int start = problemData.TrainingPartition.Start;
-      int end = problemData.TrainingPartition.End;
-      IEnumerable<int> rows = Enumerable.Range(start, end - start);
+      IEnumerable<int> rows = problemData.TrainingIndizes;
       int info;
       double[,] centers;
