Example #1
0
        public void FloatingPointConversion_ToString()
        {
            var value  = 1.2354236;
            var actual = FloatingPointConversion.ToString(value);

            Assert.AreEqual("1.2354236", actual);
        }
Example #2
0
        string[] CreateDateTimeFeatures(DateTime dateTime)
        {
            var year       = dateTime.Year;
            var month      = dateTime.Month;
            var dayOfMonth = dateTime.Day;
            var dayOfWeek  = (int)dateTime.DayOfWeek;
            var hours      = dateTime.TimeOfDay.Hours;
            var totalDays  = Math.Round(dateTime.Subtract(m_startDate).TotalDays, 1);
            var totalhours = Math.Round(dateTime.Subtract(m_startDate).TotalHours, 1);

            var dfi        = DateTimeFormatInfo.CurrentInfo;
            var cal        = dfi.Calendar;
            var weekOfYear = cal.GetWeekOfYear(dateTime, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);

            var timeValues = new string[]
            {
                FloatingPointConversion.ToString(year),
                FloatingPointConversion.ToString(month),
                FloatingPointConversion.ToString(weekOfYear),
                FloatingPointConversion.ToString(dayOfMonth),
                FloatingPointConversion.ToString(dayOfWeek),
                FloatingPointConversion.ToString(hours),
                FloatingPointConversion.ToString(totalDays),
                FloatingPointConversion.ToString(totalhours),
            };

            return(timeValues);
        }
        public void StringMatrixExtensions_ToF64Matrix()
        {
            var stringMatrix = new StringMatrix(InputData, 2, 3);
            var actual       = stringMatrix.ToF64Matrix();

            Assert.AreEqual(new F64Matrix(InputData.Select(v => FloatingPointConversion.ToF64(v)).ToArray(), 2, 3), actual);
        }
        public void FloatingPointConversion_ToF64()
        {
            var value  = "1.2354236";
            var actual = FloatingPointConversion.ToF64(value);

            Assert.AreEqual(1.2354236, actual);
        }
        /// <summary>
        /// Parse array of feature importance values from text dump of XGBoost trees.
        /// </summary>
        /// <param name="textTrees"></param>
        /// <param name="numberOfFeatures"></param>
        /// <returns></returns>
        public static double[] ParseFromTreeDump(string[] textTrees, int numberOfFeatures)
        {
            var importanceType = new string[] { "gain=" };
            var newLine        = new string[] { "\n" };

            var rawFeatureImportance = new double[numberOfFeatures];

            foreach (var tree in textTrees)
            {
                var lines = tree.Split(newLine, StringSplitOptions.RemoveEmptyEntries);
                foreach (var line in lines)
                {
                    if (!line.Contains("[") || line.Contains("booster"))
                    {
                        // Continue if line does not contain a split.
                        continue;
                    }

                    // Extract feature name from string between []
                    var name = line.Split('[')[1].Split(']')[0].Split('<')[0];

                    // Extract featureIndex
                    var featureIndex = int.Parse(name.Split('f')[1]);

                    // extract gain or cover
                    var gain = FloatingPointConversion.ToF64(line.Split(importanceType,
                                                                        StringSplitOptions.RemoveEmptyEntries)[1].Split(',')[0]);

                    // add to featureImportance
                    rawFeatureImportance[featureIndex] += gain;
                }
            }

            return(rawFeatureImportance);
        }
Example #6
0
        /// <summary>
        /// Parses the leaf value from a line.
        /// </summary>
        /// <param name="line"></param>
        /// <returns></returns>
        public static double ParseLeafValue(string line)
        {
            var valueLine   = line.Split(m_leafSplit, StringSplitOptions.RemoveEmptyEntries)[1];
            var valueString = valueLine.Split(',')[0];
            var value       = FloatingPointConversion.ToF64(valueString);

            return(value);
        }
Example #7
0
        public void F64MatrixExtensions_ToStringMatrix()
        {
            var matrix = new F64Matrix(InputData, 2, 3);
            var actual = matrix.ToStringMatrix();

            var expected = new StringMatrix(InputData.Select(v => FloatingPointConversion.ToString(v)).ToArray(), 2, 3);

            Assert.AreEqual(expected, actual);
        }
Example #8
0
        /// <summary>
        /// Parses the split value from a line.
        /// </summary>
        /// <param name="line"></param>
        /// <returns></returns>
        public static double ParseSplitValue(string line)
        {
            // Extract feature value from string between []
            var valueString = line.Split('[')[1].Split(']')[0].Split('<')[1];

            // convert value.
            var value = FloatingPointConversion.ToF64(valueString);

            return(value);
        }
Example #9
0
        public void FloatingPointConversion_ToF64_to_from_custom_infinity()
        {
            var text = new string[] { "Inf", "beyond", "0.0", "75357.987" };

            var nfi = new NumberFormatInfo()
            {
                PositiveInfinitySymbol = text[0],
                NegativeInfinitySymbol = text[1],
            };

            var actual = text.Select(x => FloatingPointConversion.ToF64(x,
                                                                        converter: t => double.Parse(t, nfi))).ToArray();

            var expected = new double[] { double.PositiveInfinity, double.NegativeInfinity, 0.0, 75357.987 };

            CollectionAssert.AreEqual(expected, actual);
        }
 /// <summary>
 /// Converts an array of doubles to an array of strings
 /// </summary>
 /// <param name="v"></param>
 /// <returns></returns>
 public static string[] AsString(this double[] v)
 {
     return(v.Select(s => FloatingPointConversion.ToString(s)).ToArray());
 }
 /// <summary>
 /// Converts am array of string to an array of floats
 /// </summary>
 /// <param name="v"></param>
 /// <returns></returns>
 public static double[] AsF64(this string[] v)
 {
     return(v.Select(s => FloatingPointConversion.ToF64(s)).ToArray());
 }
Example #12
0
 static double ToF64(string value)
 {
     return(FloatingPointConversion.ToF64(value));
 }
        public void FloatingPointConversion_ToF64_Unable_To_Parse()
        {
            var value = "infinity12";

            FloatingPointConversion.ToF64(value);
        }