Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/28/16 13:33:17 (8 years ago)
Author:
mkommend
Message:

#2604:

  • Base classes for data analysis, classification, and regression models
  • Added target variable to classification and regression models
  • Switched parameter order in data analysis solutions (model, problemdata)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Nca/NcaModel.cs

    r13921 r13941  
    3030  [Item("NCA Model", "")]
    3131  [StorableClass]
    32   public class NcaModel : NamedItem, INcaModel {
    33     public IEnumerable<string> VariablesUsedForPrediction {
     32  public class NcaModel : ClassificationModel, INcaModel {
     33    public override IEnumerable<string> VariablesUsedForPrediction {
    3434      get { return allowedInputVariables; }
    35     }
    36 
    37     public string TargetVariable {
    38       get { return targetVariable; }
    3935    }
    4036
     
    4642    [Storable]
    4743    private string[] allowedInputVariables;
    48     [Storable]
    49     private string targetVariable;
    5044    [Storable]
    5145    private INearestNeighbourModel nnModel;
     
    5953      this.transformationMatrix = (double[,])original.transformationMatrix.Clone();
    6054      this.allowedInputVariables = (string[])original.allowedInputVariables.Clone();
    61       this.targetVariable = original.targetVariable;
    6255      this.nnModel = cloner.Clone(original.nnModel);
    6356      this.classValues = (double[])original.classValues.Clone();
    6457    }
    65     public NcaModel(int k, double[,] transformationMatrix, IDataset dataset, IEnumerable<int> rows, string targetVariable, IEnumerable<string> allowedInputVariables, double[] classValues) {
     58    public NcaModel(int k, double[,] transformationMatrix, IDataset dataset, IEnumerable<int> rows, string targetVariable, IEnumerable<string> allowedInputVariables, double[] classValues)
     59      : base(targetVariable) {
    6660      Name = ItemName;
    6761      Description = ItemDescription;
    6862      this.transformationMatrix = (double[,])transformationMatrix.Clone();
    6963      this.allowedInputVariables = allowedInputVariables.ToArray();
    70       this.targetVariable = targetVariable;
    7164      this.classValues = (double[])classValues.Clone();
    7265
     
    7972    }
    8073
    81     public IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) {
     74    public override IEnumerable<double> GetEstimatedClassValues(IDataset dataset, IEnumerable<int> rows) {
    8275      var ds = ReduceDataset(dataset, rows);
    8376      return nnModel.GetEstimatedClassValues(ds, Enumerable.Range(0, ds.Rows));
    8477    }
    8578
    86     public INcaClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) {
    87       return new NcaClassificationSolution(new ClassificationProblemData(problemData), this);
     79    public override IClassificationSolution CreateClassificationSolution(IClassificationProblemData problemData) {
     80      return new NcaClassificationSolution(this, new ClassificationProblemData(problemData));
    8881    }
    8982
    90     IClassificationSolution IClassificationModel.CreateClassificationSolution(IClassificationProblemData problemData) {
    91       return CreateClassificationSolution(problemData);
     83    INcaClassificationSolution INcaModel.CreateClassificationSolution(IClassificationProblemData problemData) {
     84      return new NcaClassificationSolution(this, new ClassificationProblemData(problemData));
    9285    }
    9386
     
    9588      var data = AlglibUtil.PrepareInputMatrix(dataset, allowedInputVariables, rows);
    9689
    97       var targets = dataset.GetDoubleValues(targetVariable, rows).ToArray();
     90      var targets = dataset.GetDoubleValues(TargetVariable, rows).ToArray();
    9891      var result = new double[data.GetLength(0), transformationMatrix.GetLength(1) + 1];
    9992      for (int i = 0; i < data.GetLength(0); i++)
     
    111104          .Range(0, transformationMatrix.GetLength(1))
    112105          .Select(x => "X" + x.ToString())
    113           .Concat(targetVariable.ToEnumerable()),
     106          .Concat(TargetVariable.ToEnumerable()),
    114107        Reduce(dataset, rows));
    115108    }
Note: See TracChangeset for help on using the changeset viewer.