Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/08/16 14:37:15 (8 years ago)
Author:
mkommend
Message:

#2604: Merged r13826,r13921, r13922, r13941, r13992, r13993, r14000 intos table.

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.DataAnalysis

  • stable/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Regression/RegressionEnsembleModel.cs

    r13976 r14027  
    3333  [StorableClass]
    3434  [Item("RegressionEnsembleModel", "A regression model that contains an ensemble of multiple regression models")]
    35   public sealed class RegressionEnsembleModel : NamedItem, IRegressionEnsembleModel {
     35  public sealed class RegressionEnsembleModel : RegressionModel, IRegressionEnsembleModel {
     36    public override IEnumerable<string> VariablesUsedForPrediction {
     37      get { return models.SelectMany(x => x.VariablesUsedForPrediction).Distinct().OrderBy(x => x); }
     38    }
    3639
    3740    private List<IRegressionModel> models;
     
    100103    public RegressionEnsembleModel(IEnumerable<IRegressionModel> models) : this(models, models.Select(m => 1.0)) { }
    101104    public RegressionEnsembleModel(IEnumerable<IRegressionModel> models, IEnumerable<double> modelWeights)
    102       : base() {
     105      : base(string.Empty) {
    103106      this.name = ItemName;
    104107      this.description = ItemDescription;
    105108
    106 
    107109      this.models = new List<IRegressionModel>(models);
    108110      this.modelWeights = new List<double>(modelWeights);
     111
     112      if (this.models.Any()) this.TargetVariable = this.models.First().TargetVariable;
    109113    }
    110114
    111115    public void Add(IRegressionModel model) {
     116      if (string.IsNullOrEmpty(TargetVariable)) TargetVariable = model.TargetVariable;
    112117      Add(model, 1.0);
    113118    }
    114119    public void Add(IRegressionModel model, double weight) {
     120      if (string.IsNullOrEmpty(TargetVariable)) TargetVariable = model.TargetVariable;
     121
    115122      models.Add(model);
    116123      modelWeights.Add(weight);
     
    122129    }
    123130    public void AddRange(IEnumerable<IRegressionModel> models, IEnumerable<double> weights) {
     131      if (string.IsNullOrEmpty(TargetVariable)) TargetVariable = models.First().TargetVariable;
     132
    124133      this.models.AddRange(models);
    125134      modelWeights.AddRange(weights);
     
    131140      models.RemoveAt(index);
    132141      modelWeights.RemoveAt(index);
     142
     143      if (!models.Any()) TargetVariable = string.Empty;
    133144      OnChanged();
    134145    }
     
    139150        modelWeights.RemoveAt(index);
    140151      }
     152
     153      if (!models.Any()) TargetVariable = string.Empty;
    141154      OnChanged();
    142155    }
     
    165178    }
    166179
    167     public IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) {
     180    public override IEnumerable<double> GetEstimatedValues(IDataset dataset, IEnumerable<int> rows) {
    168181      double weightsSum = modelWeights.Sum();
    169182      var summedEstimates = from estimatedValuesVector in GetEstimatedValueVectors(dataset, rows)
     
    213226
    214227
    215     public RegressionEnsembleSolution CreateRegressionSolution(IRegressionProblemData problemData) {
     228    public override IRegressionSolution CreateRegressionSolution(IRegressionProblemData problemData) {
    216229      return new RegressionEnsembleSolution(this, new RegressionEnsembleProblemData(problemData));
    217     }
    218     IRegressionSolution IRegressionModel.CreateRegressionSolution(IRegressionProblemData problemData) {
    219       return CreateRegressionSolution(problemData);
    220230    }
    221231  }
Note: See TracChangeset for help on using the changeset viewer.