BigML.Utils.mergeBins C# (CSharp) Method

mergeBins() public static method

Merges the bins of a regression distribution to the given limit number
public static mergeBins ( double>.IDictionary distribution, int limit ) : double>.Dictionary
distribution double>.IDictionary
limit int
return double>.Dictionary
        public static Dictionary<object, double> mergeBins(IDictionary<object, double> distribution, int limit)
        {
            JsonArray mergedDist = mergeBins(convertDistributionMapToSortedArray(distribution), limit);
            return convertDistributionArrayToMap(mergedDist);
        }

Same methods

Utils::mergeBins ( JsonArray distribution, int limit ) : JsonArray

Usage Example

Example #1
0
        /// <summary>
        /// Returns a distribution formed by grouping the distributions of each predicted node.
        /// </summary>
        protected internal Dictionary <string, object> getGroupedDistribution(MultiVote multiVoteInstance)
        {
            Dictionary <object, double> joinedDist = new Dictionary <object, double>();
            string distributionUnit = "counts";
            Dictionary <object, double> predictionDist;
            object distribution;

            foreach (Dictionary <object, object> prediction in multiVoteInstance.Predictions)
            {
                // Equivalent to:
                //  JSONArray predictionDist = (JSONArray) prediction.get("distribution");
                predictionDist = null;
                distribution   = prediction["distribution"];

                if (distribution is IDictionary)
                {
                    predictionDist = (Dictionary <object, double>)distribution;
                }
                else if ((distribution == null) || (!(distribution is JsonArray)))
                {
                    predictionDist = new Dictionary <object, double>();
                }
                else
                {
                    predictionDist = Utils.convertDistributionArrayToMap((JsonArray)distribution);
                }

                // Equivalent to:
                //  joinedDist = Utils.mergeDistributions(joinedDist, Utils.convertDistributionArrayToMap(predictionDist));
                joinedDist = Utils.mergeDistributions(joinedDist, predictionDist);

                if ("counts".Equals(distributionUnit) && joinedDist.Count > BINS_LIMIT)
                {
                    distributionUnit = "bins";
                }

                joinedDist = Utils.mergeBins(joinedDist, BINS_LIMIT);
            }

            Dictionary <string, object> distributionInfo = new Dictionary <string, object>();

            distributionInfo["distribution"]     = Utils.convertDistributionMapToSortedArray(joinedDist);
            distributionInfo["distributionUnit"] = distributionUnit;

            return(distributionInfo);
        }