Changeset 13148


Ignore:
Timestamp:
11/13/15 20:54:47 (4 years ago)
Author:
gkronber
Message:

#2488: merged r13025:13026 and r13064 from trunk to stable branch

Location:
stable
Files:
6 edited
2 copied

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Algorithms.DataAnalysis

  • stable/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj

    r13146 r13148  
    200200    <Compile Include="GradientBoostedTrees\GradientBoostedTreesModel.cs" />
    201201    <Compile Include="GradientBoostedTrees\LossFunctions\AbsoluteErrorLoss.cs" />
     202    <Compile Include="GradientBoostedTrees\LossFunctions\QuantileRegressionLoss.cs" />
    202203    <Compile Include="GradientBoostedTrees\LossFunctions\ILossFunction.cs" />
    203204    <Compile Include="GradientBoostedTrees\LossFunctions\LogisticRegressionLoss.cs" />
  • stable/HeuristicLab.Common/3.3/EnumerableStatisticExtensions.cs

    r12009 r13148  
    2222using System;
    2323using System.Collections.Generic;
     24using System.Diagnostics.Contracts;
    2425using System.Linq;
    2526
     
    4445      } else {
    4546        return (valuesArr[(n / 2) - 1] + valuesArr[n / 2]) / 2.0;
     47      }
     48    }
     49
     50    /// <summary>
     51    /// Calculates the alpha-quantile element of the enumeration.
     52    /// </summary>
     53    /// <param name="values"></param>
     54    /// <returns></returns>
     55    public static double Quantile(this IEnumerable<double> values, double alpha) {
     56      Contract.Assert(alpha > 0 && alpha < 1);
     57      // iterate only once
     58      double[] valuesArr = values.ToArray();
     59      int n = valuesArr.Length;
     60      if (n == 0) throw new InvalidOperationException("Enumeration contains no elements.");
     61
     62      Array.Sort(valuesArr);
     63      //  starts at 0
     64
     65      // return the element at Math.Ceiling (if n*alpha is fractional) or the average of two elements if n*alpha is integer.
     66      var pos = n * alpha;
     67      Contract.Assert(pos >= 0);
     68      Contract.Assert(pos < n);
     69      bool isInteger = Math.Round(pos).IsAlmost(pos);
     70      if (isInteger) {
     71        return 0.5 * (valuesArr[(int)pos - 1] + valuesArr[(int)pos]);
     72      } else {
     73        return valuesArr[(int)Math.Ceiling(pos) - 1];
    4674      }
    4775    }
  • stable/HeuristicLab.Tests

  • stable/HeuristicLab.Tests/HeuristicLab.Tests.csproj

    r12747 r13148  
    468468    <Compile Include="HeuristicLab.Collections-3.3\BidirectionalLookupTest.cs" />
    469469    <Compile Include="HeuristicLab.Collections-3.3\ObservableKeyedListTest.cs" />
     470    <Compile Include="HeuristicLab.Common-3.3\EnumerableStatisticExtensions.cs" />
    470471    <Compile Include="HeuristicLab.Encodings.BinaryVectorEncoding-3.3\Auxiliary.cs" />
    471472    <Compile Include="HeuristicLab.Encodings.BinaryVectorEncoding-3.3\NPointCrossoverTest.cs" />
     
    616617    </None>
    617618    <None Include="HeuristicLab.snk" />
     619    <None Include="Test References\HeuristicLab.PluginInfrastructure-3.3.accessor" />
    618620    <None Include="Test Resources\GA_SymbReg.hl">
    619621      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     
    629631    </None>
    630632    <Shadow Include="Test References\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.accessor" />
    631     <Shadow Include="Test References\HeuristicLab.PluginInfrastructure-3.3.accessor" />
    632633    <Shadow Include="Test References\HeuristicLab.MainForm.WindowsForms-3.3.accessor" />
    633634    <Shadow Include="Test References\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.accessor" />
Note: See TracChangeset for help on using the changeset viewer.