Changeset 15479 for branches/Weighted TSNE/3.4/TSNE/TSNEAlgorithm.cs
- Timestamp:
- 11/20/17 15:29:53 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Weighted TSNE/3.4/TSNE/TSNEAlgorithm.cs
r15455 r15479 29 29 using HeuristicLab.Core; 30 30 using HeuristicLab.Data; 31 using HeuristicLab.Encodings.RealVectorEncoding;32 31 using HeuristicLab.Optimization; 33 32 using HeuristicLab.Parameters; … … 87 86 #region Parameter properties 88 87 public IFixedValueParameter<DoubleValue> PerplexityParameter { 89 get { return Parameters[PerplexityParameterName] as IFixedValueParameter<DoubleValue>; }88 get { return (IFixedValueParameter<DoubleValue>) Parameters[PerplexityParameterName]; } 90 89 } 91 90 public IFixedValueParameter<PercentValue> ThetaParameter { 92 get { return Parameters[ThetaParameterName] as IFixedValueParameter<PercentValue>; }91 get { return (IFixedValueParameter<PercentValue>) Parameters[ThetaParameterName]; } 93 92 } 94 93 public IFixedValueParameter<IntValue> NewDimensionsParameter { 95 get { return Parameters[NewDimensionsParameterName] as IFixedValueParameter<IntValue>; }94 get { return (IFixedValueParameter<IntValue>) Parameters[NewDimensionsParameterName]; } 96 95 } 97 96 public IConstrainedValueParameter<IDistance<double[]>> DistanceFunctionParameter { 98 get { return Parameters[DistanceFunctionParameterName] as IConstrainedValueParameter<IDistance<double[]>>; }97 get { return (IConstrainedValueParameter<IDistance<double[]>>) Parameters[DistanceFunctionParameterName]; } 99 98 } 100 99 public IFixedValueParameter<IntValue> MaxIterationsParameter { 101 get { return Parameters[MaxIterationsParameterName] as IFixedValueParameter<IntValue>; }100 get { return (IFixedValueParameter<IntValue>) Parameters[MaxIterationsParameterName]; } 102 101 } 103 102 public IFixedValueParameter<IntValue> StopLyingIterationParameter { 104 get { return Parameters[StopLyingIterationParameterName] as IFixedValueParameter<IntValue>; }103 get { return (IFixedValueParameter<IntValue>) Parameters[StopLyingIterationParameterName]; } 105 104 } 106 105 public IFixedValueParameter<IntValue> MomentumSwitchIterationParameter { 107 get { return Parameters[MomentumSwitchIterationParameterName] as IFixedValueParameter<IntValue>; }106 get { return (IFixedValueParameter<IntValue>) Parameters[MomentumSwitchIterationParameterName]; } 108 107 } 109 108 public IFixedValueParameter<DoubleValue> InitialMomentumParameter { 110 get { return Parameters[InitialMomentumParameterName] as IFixedValueParameter<DoubleValue>; }109 get { return (IFixedValueParameter<DoubleValue>) Parameters[InitialMomentumParameterName]; } 111 110 } 112 111 public IFixedValueParameter<DoubleValue> FinalMomentumParameter { 113 get { return Parameters[FinalMomentumParameterName] as IFixedValueParameter<DoubleValue>; }112 get { return (IFixedValueParameter<DoubleValue>) Parameters[FinalMomentumParameterName]; } 114 113 } 115 114 public IFixedValueParameter<DoubleValue> EtaParameter { 116 get { return Parameters[EtaParameterName] as IFixedValueParameter<DoubleValue>; }115 get { return (IFixedValueParameter<DoubleValue>) Parameters[EtaParameterName]; } 117 116 } 118 117 public IFixedValueParameter<BoolValue> SetSeedRandomlyParameter { 119 get { return Parameters[SetSeedRandomlyParameterName] as IFixedValueParameter<BoolValue>; }118 get { return (IFixedValueParameter<BoolValue>) Parameters[SetSeedRandomlyParameterName]; } 120 119 } 121 120 public IFixedValueParameter<IntValue> SeedParameter { 122 get { return Parameters[SeedParameterName] as IFixedValueParameter<IntValue>; }121 get { return (IFixedValueParameter<IntValue>) Parameters[SeedParameterName]; } 123 122 } 124 123 public IConstrainedValueParameter<StringValue> ClassesNameParameter { 125 get { return Parameters[ClassesNameParameterName] as IConstrainedValueParameter<StringValue>; }124 get { return (IConstrainedValueParameter<StringValue>) Parameters[ClassesNameParameterName]; } 126 125 } 127 126 public IFixedValueParameter<BoolValue> NormalizationParameter { 128 get { return Parameters[NormalizationParameterName] as IFixedValueParameter<BoolValue>; }127 get { return (IFixedValueParameter<BoolValue>) Parameters[NormalizationParameterName]; } 129 128 } 130 129 public IFixedValueParameter<BoolValue> RandomInitializationParameter { 131 get { return Parameters[RandomInitializationParameterName] as IFixedValueParameter<BoolValue>; }130 get { return (IFixedValueParameter<BoolValue>) Parameters[RandomInitializationParameterName]; } 132 131 } 133 132 public IFixedValueParameter<IntValue> UpdateIntervalParameter { 134 get { return Parameters[UpdateIntervalParameterName] as IFixedValueParameter<IntValue>; }133 get { return (IFixedValueParameter<IntValue>) Parameters[UpdateIntervalParameterName]; } 135 134 } 136 135 #endregion … … 336 335 private void OnColumnsChanged(object sender, EventArgs e) { 337 336 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()); 339 338 } 340 339 … … 531 530 532 531 private static Color ConvertTotalToRgb(double low, double high, double cell) { 532 var colorGradient = ColorGradient.Colors; 533 533 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]; 573 536 } 574 537 #endregion
Note: See TracChangeset
for help on using the changeset viewer.