コード例 #1
0
        public double GetAvgStdErr(string expName, string algoName, OrdinalPerfMetric metric, IEnumerable <LblT> orderedLabels, out double stderr, double confidenceLevel = 0.95)
        {
            double zval = StatsUtils.GetZScore(confidenceLevel);
            double stddev;
            double avg = GetAvg(expName, algoName, metric, orderedLabels, out stddev);

            stderr = zval * stddev / Math.Sqrt(GetFoldCount(expName, algoName));
            return(avg);
        }
コード例 #2
0
        public double GetScore(OrdinalPerfMetric metric, IEnumerable <LblT> orderedLabels = null)
        {
            LblT[] labels = null;
            if (orderedLabels == null)
            {
                if (typeof(LblT).IsEnum) // take label order from the enum type definition
                {
                    labels = Enum.GetValues(typeof(LblT)).Cast <LblT>().ToArray();
                }
            }
            else
            {
                labels = orderedLabels as LblT[] ?? orderedLabels.ToArray();
            }

            switch (metric)
            {
            case OrdinalPerfMetric.MeanAbsoluteError:
                return(GetError(labels, GetLinearWeights(labels)));

            case OrdinalPerfMetric.MeanSquaredError:
                return(GetError(labels, GetSquareWeights(labels)));

            case OrdinalPerfMetric.ErrorTolerance1:
                return(GetError(labels, GetErrorXWeights(labels, 1)));

            case OrdinalPerfMetric.AccuracyTolerance1:
                return(1 - GetError(labels, GetErrorXWeights(labels, 1)));

            case OrdinalPerfMetric.MeanAbsoluteErrorNormalized1:
                return(GetError(labels, GetLinearWeights(labels, true)));

            case OrdinalPerfMetric.MeanSquaredErrorNormalized1:
                return(GetError(labels, GetSquareWeights(labels, true)));

            case OrdinalPerfMetric.WeightedKappaLinear:
                return(GetWeightedKappa(labels, GetLinearWeights(labels, true)));

            case OrdinalPerfMetric.WeightedKappaSquared:
                return(GetWeightedKappa(labels, GetSquareWeights(labels, true)));

            case OrdinalPerfMetric.KAlphaLinear:
                return(GetKrippendorffsAlpha(labels, GetLinearWeights(labels, true)));

            case OrdinalPerfMetric.KAlphaInterval:
                return(GetKrippendorffsAlpha(labels, GetSquareWeights(labels, true)));

            case OrdinalPerfMetric.F1AvgExtremeClasses:
                return(GetF1AvgExtremeClasses(labels));

            default:
                throw new ArgumentValueException("invalid ordered metric");
            }
        }
コード例 #3
0
        public double GetVal(int foldNum, string expName, string algoName, OrdinalPerfMetric metric, IEnumerable <LblT> orderedLabels)
        {
            Utils.ThrowException(foldNum < 1 ? new ArgumentOutOfRangeException("foldNum") : null);
            Utils.ThrowException(expName == null ? new ArgumentNullException("expName") : null);
            Utils.ThrowException(algoName == null ? new ArgumentNullException("algoName") : null);
            ConcurrentDictionary <string, FoldData> algoData;

            if (mData.TryGetValue(expName, out algoData))
            {
                FoldData foldData;
                if (algoData.TryGetValue(algoName, out foldData))
                {
                    if (foldNum <= foldData.Count && foldData[foldNum - 1] != null)
                    {
                        return(foldData[foldNum - 1].GetScore(metric, orderedLabels));
                    }
                }
            }
            return(Double.NaN);
        }
コード例 #4
0
        public double GetAvg(string expName, string algoName, OrdinalPerfMetric metric, IEnumerable <LblT> orderedLabels)
        {
            double stdev;

            return(GetAvg(expName, algoName, metric, orderedLabels, out stdev));
        }
コード例 #5
0
 public double GetAvg(string expName, string algoName, OrdinalPerfMetric metric, IEnumerable <LblT> orderedLabels, out double stdev)
 {
     return(GetAvg(expName, algoName, mtx => mtx.GetScore(metric, orderedLabels), out stdev));
 }