コード例 #1
0
        public static double ComputeROCAUCTrapeziod <RealType>(IList <bool> labels, IList <RealType> sample)
            where RealType : IComparable <RealType>
        {
            int    postive_count            = ToolsCollection.CountOccurance(labels, true);
            double true_positive_increment  = 1.0 / postive_count;
            double false_positive_increment = 1.0 / (labels.Count - postive_count);

            double[]   true_positive_rates  = new double[labels.Count + 1];
            double[]   false_positive_rates = new double[labels.Count + 1];
            List <int> ordering             = ToolsMathCollection.Ordering(sample);


            for (int index = 1; index < labels.Count + 1; index++)
            {
                if (labels[ordering[index - 1]])
                {
                    true_positive_rates[index]  = true_positive_rates[index - 1] + true_positive_increment;
                    false_positive_rates[index] = false_positive_rates[index - 1];
                }
                else
                {
                    true_positive_rates[index]  = true_positive_rates[index - 1];
                    false_positive_rates[index] = false_positive_rates[index - 1] + false_positive_increment;
                }
            }
            return(IntegralEvaluatorTrapezoid.EvaluateStaticValue(false_positive_rates, true_positive_rates));
        }
コード例 #2
0
 public double Compute(double[] values_0, double[] values_1)
 {
     double[] temp_0 = new double[values_0.Length];
     double[] temp_1 = new double[values_0.Length];
     double[] domain = new double[values_0.Length];
     for (int index = 0; index < temp_0.Length; index++)
     {
         temp_0[index] = values_0[index] - values_1[index];
         domain[index] = index;
     }
     IntegralEvaluatorTrapezoid.EvaluateStaticSeriesRBA(domain, temp_0, temp_1);
     ToolsMathCollectionDouble.AbsRBA(temp_1);
     return(IntegralEvaluatorTrapezoid.EvaluateStaticValue(domain, temp_1) / (domain[domain.Length - 1] - domain[0]));
 }
コード例 #3
0
        public static double compute(
            double[] domain,
            double[] values_0,
            double[] values_1,
            double[] temp_0,
            double[] temp_1)
        {
            double auc_0 = IntegralEvaluatorTrapezoid.EvaluateStaticValue(domain, values_0);
            double auc_1 = IntegralEvaluatorTrapezoid.EvaluateStaticValue(domain, values_1);

            for (int index = 0; index < temp_0.Length; index++)
            {
                temp_0[index] = (values_0[index] / auc_0) - (values_1[index] / auc_1);
            }
            IntegralEvaluatorTrapezoid.EvaluateStaticSeriesRBA(domain, temp_0, temp_1);
            ToolsMathCollectionDouble.AbsRBA(temp_1);
            return(IntegralEvaluatorTrapezoid.EvaluateStaticValue(domain, temp_1) / (domain[domain.Length - 1] - domain[0]));
        }