Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/05/11 20:17:59 (12 years ago)
Author:
gkronber
Message:

#1081 worked on multi-variate time series prognosis

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis.Views/3.4/TimeSeriesPrognosis/TimeSeriesPrognosisSolutionLineChartView.cs

    r6802 r7129  
    3636    private const string PROGNOSEDVALUES_TEST_SERIES_NAME = "Prognosed Values (test)";
    3737    private const string PROGNOSEDVALUES_ALL_SERIES_NAME = "Prognosed Values (all samples)";
     38    private string prevTargetVariable;
    3839
    3940    public new ITimeSeriesPrognosisSolution Content {
     
    5758    }
    5859
     60    private void UpdateTargetVariables() {
     61      // populate combobox
     62      targetVariableComboBox.Items.Clear();
     63      if (Content != null) {
     64        foreach (var targetVariable in Content.ProblemData.TargetVariables)
     65          targetVariableComboBox.Items.Add(targetVariable);
     66
     67        targetVariableComboBox.SelectedIndex = 0;
     68      }
     69    }
     70
     71
     72
    5973    private void RedrawChart() {
    6074      this.chart.Series.Clear();
     
    6276        this.chart.ChartAreas[0].AxisX.Minimum = 0;
    6377        this.chart.ChartAreas[0].AxisX.Maximum = Content.ProblemData.Dataset.Rows - 1;
     78        string targetVariable = (string)targetVariableComboBox.SelectedItem;
     79        int varIndex = Content.ProblemData.TargetVariables.ToList().IndexOf(targetVariable);
    6480
    6581        this.chart.Series.Add(TARGETVARIABLE_SERIES_NAME);
    66         this.chart.Series[TARGETVARIABLE_SERIES_NAME].LegendText = Content.ProblemData.TargetVariable;
     82        this.chart.Series[TARGETVARIABLE_SERIES_NAME].LegendText = targetVariable;
    6783        this.chart.Series[TARGETVARIABLE_SERIES_NAME].ChartType = SeriesChartType.FastLine;
    6884        this.chart.Series[TARGETVARIABLE_SERIES_NAME].Points.DataBindXY(Enumerable.Range(0, Content.ProblemData.Dataset.Rows).ToArray(),
    69           Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.TargetVariable).ToArray());
     85          Content.ProblemData.Dataset.GetDoubleValues(targetVariable).ToArray());
    7086
    7187        this.chart.Series.Add(PROGNOSEDVALUES_TRAINING_SERIES_NAME);
    7288        this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].LegendText = PROGNOSEDVALUES_TRAINING_SERIES_NAME;
    7389        this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].ChartType = SeriesChartType.FastLine;
    74         this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].Points.DataBindXY(Content.ProblemData.TrainingIndizes.ToArray(), Content.PrognosedTrainingValues.ToArray());
     90        if (prognosedValuesCheckbox.Checked) {
     91          this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].Points
     92            .DataBindXY(Content.ProblemData.TrainingIndizes.ToArray(),
     93                        Content.PrognosedTrainingValues.ElementAt(varIndex).ToArray());
     94        } else {
     95          this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].Points
     96            .DataBindXY(Content.ProblemData.TrainingIndizes.ToArray(),
     97                        Content.GetPrognosedValues(Content.ProblemData.TrainingIndizes, 1).Select(v => v.ElementAt(varIndex).First()).ToArray());
     98        }
    7599        this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].Tag = Content;
    76100        this.chart.DataManipulator.InsertEmptyPoints(1, IntervalType.Number, PROGNOSEDVALUES_TRAINING_SERIES_NAME);
     
    82106        this.chart.Series[PROGNOSEDVALUES_TEST_SERIES_NAME].LegendText = PROGNOSEDVALUES_TEST_SERIES_NAME;
    83107        this.chart.Series[PROGNOSEDVALUES_TEST_SERIES_NAME].ChartType = SeriesChartType.FastLine;
    84         this.chart.Series[PROGNOSEDVALUES_TEST_SERIES_NAME].Points.DataBindXY(Content.ProblemData.TestIndizes.ToArray(), Content.PrognosedTestValues.ToArray());
     108        if (prognosedValuesCheckbox.Checked) {
     109          this.chart.Series[PROGNOSEDVALUES_TEST_SERIES_NAME].Points
     110            .DataBindXY(Content.ProblemData.TestIndizes.ToArray(),
     111                        Content.PrognosedTestValues.ElementAt(varIndex).ToArray());
     112        } else {
     113          this.chart.Series[PROGNOSEDVALUES_TEST_SERIES_NAME].Points
     114            .DataBindXY(Content.ProblemData.TestIndizes.ToArray(),
     115                        Content.GetPrognosedValues(Content.ProblemData.TestIndizes, 1).Select(
     116                          v => v.ElementAt(varIndex).First()).ToArray());
     117        }
    85118        this.chart.Series[PROGNOSEDVALUES_TEST_SERIES_NAME].Tag = Content;
    86 
    87 
    88         int[] allIndizes = Enumerable.Range(0, Content.ProblemData.Dataset.Rows).Except(Content.ProblemData.TrainingIndizes).Except(Content.ProblemData.TestIndizes).ToArray();
    89         var estimatedValues = Content.PrognosedValues.ToArray();
    90         List<double> allEstimatedValues = allIndizes.Select(index => estimatedValues[index]).ToList();
    91 
    92         this.chart.Series.Add(PROGNOSEDVALUES_ALL_SERIES_NAME);
    93         this.chart.Series[PROGNOSEDVALUES_ALL_SERIES_NAME].LegendText = PROGNOSEDVALUES_ALL_SERIES_NAME;
    94         this.chart.Series[PROGNOSEDVALUES_ALL_SERIES_NAME].ChartType = SeriesChartType.FastLine;
    95         this.chart.Series[PROGNOSEDVALUES_ALL_SERIES_NAME].Points.DataBindXY(allIndizes, allEstimatedValues);
    96         this.chart.Series[PROGNOSEDVALUES_ALL_SERIES_NAME].Tag = Content;
    97         this.chart.DataManipulator.InsertEmptyPoints(1, IntervalType.Number, PROGNOSEDVALUES_ALL_SERIES_NAME);
    98         this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].EmptyPointStyle.BorderWidth = 0;
    99         this.chart.Series[PROGNOSEDVALUES_TRAINING_SERIES_NAME].EmptyPointStyle.MarkerStyle = MarkerStyle.None;
    100         this.ToggleSeriesData(this.chart.Series[PROGNOSEDVALUES_ALL_SERIES_NAME]);
    101119
    102120        UpdateCursorInterval();
     
    130148    protected override void OnContentChanged() {
    131149      base.OnContentChanged();
     150      UpdateTargetVariables();
     151    }
     152
     153    private void Content_ProblemDataChanged(object sender, EventArgs e) {
     154      UpdateTargetVariables();
     155    }
     156    private void Content_ModelChanged(object sender, EventArgs e) {
    132157      RedrawChart();
    133158    }
    134     private void Content_ProblemDataChanged(object sender, EventArgs e) {
     159
     160    private void targetVariableComboBox_SelectedIndexChanged(object sender, EventArgs e) {
    135161      RedrawChart();
    136162    }
    137     private void Content_ModelChanged(object sender, EventArgs e) {
     163    private void prognosedValuesCheckbox_CheckedChanged(object sender, EventArgs e) {
    138164      RedrawChart();
    139165    }
     
    207233        }
    208234      } else if (Content != null) {
    209         string targetVariableName = Content.ProblemData.TargetVariable;
     235        string targetVariable = (string)targetVariableComboBox.SelectedItem;
     236        int varIndex = Content.ProblemData.TargetVariables.ToList().IndexOf(targetVariable);
     237
    210238
    211239        IEnumerable<int> indizes = null;
    212240        IEnumerable<double> predictedValues = null;
    213241        switch (series.Name) {
    214           case PROGNOSEDVALUES_ALL_SERIES_NAME:
    215             indizes = Enumerable.Range(0, Content.ProblemData.Dataset.Rows).Except(Content.ProblemData.TrainingIndizes).Except(Content.ProblemData.TestIndizes).ToArray();
    216             var estimatedValues = Content.PrognosedValues.ToArray();
    217             predictedValues = indizes.Select(index => estimatedValues[index]).ToList();
    218             break;
    219242          case PROGNOSEDVALUES_TRAINING_SERIES_NAME:
    220243            indizes = Content.ProblemData.TrainingIndizes.ToArray();
    221             predictedValues = Content.PrognosedTrainingValues.ToArray();
     244            predictedValues = Content.PrognosedTrainingValues.ElementAt(varIndex).ToArray();
    222245            break;
    223246          case PROGNOSEDVALUES_TEST_SERIES_NAME:
    224247            indizes = Content.ProblemData.TestIndizes.ToArray();
    225             predictedValues = Content.PrognosedTestValues.ToArray();
     248            predictedValues = Content.PrognosedTestValues.ElementAt(varIndex).ToArray();
    226249            break;
    227250        }
     
    255278      e.LegendItems[3].Cells[1].ForeColor = this.chart.Series[PROGNOSEDVALUES_ALL_SERIES_NAME].Points.Count == 0 ? Color.Gray : Color.Black;
    256279    }
     280
    257281  }
    258282}
Note: See TracChangeset for help on using the changeset viewer.