Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/20/17 15:29:53 (6 years ago)
Author:
bwerth
Message:

#2850 worked on weighted tSNE

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/Weighted TSNE/3.4/TSNE/TSNEAlgorithm.cs

    r15455 r15479  
    2929using HeuristicLab.Core;
    3030using HeuristicLab.Data;
    31 using HeuristicLab.Encodings.RealVectorEncoding;
    3231using HeuristicLab.Optimization;
    3332using HeuristicLab.Parameters;
     
    8786    #region Parameter properties
    8887    public IFixedValueParameter<DoubleValue> PerplexityParameter {
    89       get { return Parameters[PerplexityParameterName] as IFixedValueParameter<DoubleValue>; }
     88      get { return (IFixedValueParameter<DoubleValue>) Parameters[PerplexityParameterName]; }
    9089    }
    9190    public IFixedValueParameter<PercentValue> ThetaParameter {
    92       get { return Parameters[ThetaParameterName] as IFixedValueParameter<PercentValue>; }
     91      get { return (IFixedValueParameter<PercentValue>) Parameters[ThetaParameterName]; }
    9392    }
    9493    public IFixedValueParameter<IntValue> NewDimensionsParameter {
    95       get { return Parameters[NewDimensionsParameterName] as IFixedValueParameter<IntValue>; }
     94      get { return (IFixedValueParameter<IntValue>) Parameters[NewDimensionsParameterName]; }
    9695    }
    9796    public IConstrainedValueParameter<IDistance<double[]>> DistanceFunctionParameter {
    98       get { return Parameters[DistanceFunctionParameterName] as IConstrainedValueParameter<IDistance<double[]>>; }
     97      get { return (IConstrainedValueParameter<IDistance<double[]>>) Parameters[DistanceFunctionParameterName]; }
    9998    }
    10099    public IFixedValueParameter<IntValue> MaxIterationsParameter {
    101       get { return Parameters[MaxIterationsParameterName] as IFixedValueParameter<IntValue>; }
     100      get { return (IFixedValueParameter<IntValue>) Parameters[MaxIterationsParameterName]; }
    102101    }
    103102    public IFixedValueParameter<IntValue> StopLyingIterationParameter {
    104       get { return Parameters[StopLyingIterationParameterName] as IFixedValueParameter<IntValue>; }
     103      get { return (IFixedValueParameter<IntValue>) Parameters[StopLyingIterationParameterName]; }
    105104    }
    106105    public IFixedValueParameter<IntValue> MomentumSwitchIterationParameter {
    107       get { return Parameters[MomentumSwitchIterationParameterName] as IFixedValueParameter<IntValue>; }
     106      get { return (IFixedValueParameter<IntValue>) Parameters[MomentumSwitchIterationParameterName]; }
    108107    }
    109108    public IFixedValueParameter<DoubleValue> InitialMomentumParameter {
    110       get { return Parameters[InitialMomentumParameterName] as IFixedValueParameter<DoubleValue>; }
     109      get { return (IFixedValueParameter<DoubleValue>) Parameters[InitialMomentumParameterName]; }
    111110    }
    112111    public IFixedValueParameter<DoubleValue> FinalMomentumParameter {
    113       get { return Parameters[FinalMomentumParameterName] as IFixedValueParameter<DoubleValue>; }
     112      get { return (IFixedValueParameter<DoubleValue>) Parameters[FinalMomentumParameterName]; }
    114113    }
    115114    public IFixedValueParameter<DoubleValue> EtaParameter {
    116       get { return Parameters[EtaParameterName] as IFixedValueParameter<DoubleValue>; }
     115      get { return (IFixedValueParameter<DoubleValue>) Parameters[EtaParameterName]; }
    117116    }
    118117    public IFixedValueParameter<BoolValue> SetSeedRandomlyParameter {
    119       get { return Parameters[SetSeedRandomlyParameterName] as IFixedValueParameter<BoolValue>; }
     118      get { return (IFixedValueParameter<BoolValue>) Parameters[SetSeedRandomlyParameterName]; }
    120119    }
    121120    public IFixedValueParameter<IntValue> SeedParameter {
    122       get { return Parameters[SeedParameterName] as IFixedValueParameter<IntValue>; }
     121      get { return (IFixedValueParameter<IntValue>) Parameters[SeedParameterName]; }
    123122    }
    124123    public IConstrainedValueParameter<StringValue> ClassesNameParameter {
    125       get { return Parameters[ClassesNameParameterName] as IConstrainedValueParameter<StringValue>; }
     124      get { return (IConstrainedValueParameter<StringValue>) Parameters[ClassesNameParameterName]; }
    126125    }
    127126    public IFixedValueParameter<BoolValue> NormalizationParameter {
    128       get { return Parameters[NormalizationParameterName] as IFixedValueParameter<BoolValue>; }
     127      get { return (IFixedValueParameter<BoolValue>) Parameters[NormalizationParameterName]; }
    129128    }
    130129    public IFixedValueParameter<BoolValue> RandomInitializationParameter {
    131       get { return Parameters[RandomInitializationParameterName] as IFixedValueParameter<BoolValue>; }
     130      get { return (IFixedValueParameter<BoolValue>) Parameters[RandomInitializationParameterName]; }
    132131    }
    133132    public IFixedValueParameter<IntValue> UpdateIntervalParameter {
    134       get { return Parameters[UpdateIntervalParameterName] as IFixedValueParameter<IntValue>; }
     133      get { return (IFixedValueParameter<IntValue>) Parameters[UpdateIntervalParameterName]; }
    135134    }
    136135    #endregion
     
    336335    private void OnColumnsChanged(object sender, EventArgs e) {
    337336      if (Problem == null || Problem.ProblemData == null || Problem.ProblemData.Dataset == null || !Parameters.ContainsKey(DistanceFunctionParameterName)) return;
    338       DistanceFunctionParameter.ValidValues.OfType<WeightedEuclideanDistance>().Single().Weights = new RealVector(Problem.ProblemData.AllowedInputVariables.Select(x => 1.0).ToArray());
     337      DistanceFunctionParameter.ValidValues.OfType<WeightedEuclideanDistance>().Single().Weights = new DoubleArray(Problem.ProblemData.AllowedInputVariables.Select(x => 1.0).ToArray());
    339338    }
    340339
     
    531530
    532531    private static Color ConvertTotalToRgb(double low, double high, double cell) {
     532      var colorGradient = ColorGradient.Colors;
    533533      var range = high - low;
    534       var h = cell / range;
    535       return HsVtoRgb(h * 0.5, 1.0f, 1.0f);
    536     }
    537 
    538     //taken from https://stackoverflow.com/a/17099130
    539     private static Color HsVtoRgb(double hue, double saturation, double value) {
    540       while (hue > 1.0) { hue -= 1.0; }
    541       while (hue < 0.0) { hue += 1.0; }
    542       while (saturation > 1.0) { saturation -= 1.0; }
    543       while (saturation < 0.0) { saturation += 1.0; }
    544       while (value > 1.0) { value -= 1.0; }
    545       while (value < 0.0) { value += 1.0; }
    546       if (hue > 0.999) { hue = 0.999; }
    547       if (hue < 0.001) { hue = 0.001; }
    548       if (saturation > 0.999) { saturation = 0.999; }
    549       if (saturation < 0.001) { return Color.FromArgb((int) (value * 255.0), (int) (value * 255.0), (int) (value * 255.0)); }
    550       if (value > 0.999) { value = 0.999; }
    551       if (value < 0.001) { value = 0.001; }
    552 
    553       var h6 = hue * 6.0;
    554       if (h6.IsAlmost(6.0)) { h6 = 0.0; }
    555       var ihue = (int) h6;
    556       var p = value * (1.0 - saturation);
    557       var q = value * (1.0 - saturation * (h6 - ihue));
    558       var t = value * (1.0 - saturation * (1.0 - (h6 - ihue)));
    559       switch (ihue) {
    560         case 0:
    561           return Color.FromArgb((int) (value * 255), (int) (t * 255), (int) (p * 255));
    562         case 1:
    563           return Color.FromArgb((int) (q * 255), (int) (value * 255), (int) (p * 255));
    564         case 2:
    565           return Color.FromArgb((int) (p * 255), (int) (value * 255), (int) (t * 255));
    566         case 3:
    567           return Color.FromArgb((int) (p * 255), (int) (q * 255), (int) (value * 255));
    568         case 4:
    569           return Color.FromArgb((int) (t * 255), (int) (p * 255), (int) (value * 255));
    570         default:
    571           return Color.FromArgb((int) (value * 255), (int) (p * 255), (int) (q * 255));
    572       }
     534      var h = cell / range * colorGradient.Count;
     535      return colorGradient[(int) h];
    573536    }
    574537    #endregion
Note: See TracChangeset for help on using the changeset viewer.