예제 #1
0
        private static void PrintPreview(DataDebuggerPreview data)
        {
            foreach (var colInfo in data.ColumnView)
            {
                Console.Write("{0,-25}", colInfo.Column.Name);
            }

            Console.WriteLine();
            foreach (var row in data.RowView)
            {
                foreach (var kvPair in row.Values)
                {
                    if (kvPair.Key == "Pixels")
                    {
                        var pixels = ((VBuffer <float>)kvPair.Value).DenseValues().Take(5);
                        Console.Write("{0}...", string.Join(",", pixels));
                    }
                    else
                    {
                        Console.Write("{0,-25}", kvPair.Value);
                    }
                }
                Console.WriteLine();
            }
        }
예제 #2
0
        // This method using 'DebuggerExtensions.Preview()' should only be used when debugging/developing, not for release/production trainings
        public static void PeekDataViewInConsole(MLContext mlContext, IDataView dataView, IEstimator <ITransformer> pipeline, int numberOfRows = 4)
        {
            string msg = string.Format("Peek data in DataView: Showing {0} rows with the columns", numberOfRows.ToString());

            ConsoleWriteHeader(msg);

            //https://github.com/dotnet/machinelearning/blob/master/docs/code/MlNetCookBook.md#how-do-i-look-at-the-intermediate-data
            ITransformer transformer     = pipeline.Fit(dataView);
            IDataView    transformedData = transformer.Transform(dataView);

            // 'transformedData' is a 'promise' of data, lazy-loading. call Preview
            //and iterate through the returned collection from preview.

            DataDebuggerPreview preViewTransformedData = transformedData.Preview(maxRows: numberOfRows);

            foreach (DataDebuggerPreview.RowInfo row in preViewTransformedData.RowView)
            {
                KeyValuePair <string, object>[] ColumnCollection = row.Values;
                string lineToPrint = "Row--> ";
                foreach (KeyValuePair <string, object> column in ColumnCollection)
                {
                    lineToPrint += $"| {column.Key}:{column.Value}";
                }
                Console.WriteLine(lineToPrint + "\n");
            }
        }
예제 #3
0
 public static void SaveAsMd(this DataOperationsCatalog _, DataDebuggerPreview preview, TextWriter writer)
 {
     writer.WriteLine($"| {String.Join(" | ", preview.Schema.Select(s => s.Name))} |");
     writer.WriteLine($"| {String.Join(" | ", preview.Schema.Select(s => "------"))} |");
     foreach (var row in preview.RowView)
     {
         writer.WriteLine($" | {String.Join(" | ", row.Values.Select(x => x.Value.ToString()))} | ");
     }
 }
예제 #4
0
 private Task AddPoints(object regressor, IDataView testDataView)
 {
     return(Task.Run(() =>
     {
         var prediction = ((IPredictMany)regressor).PredictMany(testDataView);
         result = prediction.Cast <IScore>().ToArray();
         testDataPreview = testDataView.Preview(100000);
     }).ContinueWith(async a => await UpdatePlot(CancellationToken.None), TaskScheduler.FromCurrentSynchronizationContext()));
 }
예제 #5
0
        private static void PrintPreview(DataDebuggerPreview data)
        {
            foreach (var colInfo in data.ColumnView)
            {
                Console.Write("{0,-25}", colInfo.Column.Name);
            }

            Console.WriteLine();
            foreach (var row in data.RowView)
            {
                foreach (var kvPair in row.Values)
                {
                    Console.Write("{0,-25}", kvPair.Value);
                }
                Console.WriteLine();
            }
        }
예제 #6
0
        /// <summary>
        /// Helper method to write the machine learning pipeline to the console.
        /// </summary>
        /// <param name="preview">The data preview to write.</param>
        /// <param name="numberOfRows">The maximum number of rows to write.</param>
        public static void WritePreview(DataDebuggerPreview preview, int numberOfRows = 10)
        {
            // set up a console table
            var table = new Table(
                TableConfiguration.Unicode(),
                (from c in preview.ColumnView select c.Column.Name).ToArray());

            // fill the table with results
            foreach (var row in preview.RowView)
            {
                table.AddRow((from c in row.Values
                              select c.Value is VBuffer <float>? "<vector>" : c.Value
                              ).ToArray());
            }

            // write the table
            Console.WriteLine(table.ToString());
        }
예제 #7
0
        public static void ShowDataViewInConsole(MLContext mlContext, IDataView dataView, int numberOfRows = 4)
        {
            string msg = string.Format("Show data in DataView: Showing {0} rows with the columns", numberOfRows.ToString());

            ConsoleWriteHeader(msg);

            DataDebuggerPreview preViewTransformedData = dataView.Preview(maxRows: numberOfRows);

            foreach (DataDebuggerPreview.RowInfo row in preViewTransformedData.RowView)
            {
                KeyValuePair <string, object>[] ColumnCollection = row.Values;
                string lineToPrint = "Row--> ";
                foreach (KeyValuePair <string, object> column in ColumnCollection)
                {
                    lineToPrint += $"| {column.Key}:{column.Value}";
                }
                Console.WriteLine(lineToPrint + "\n");
            }
        }
예제 #8
0
        /// <summary>
        /// Helper method to write a single column preview to the console.
        /// </summary>
        /// <param name="preview">The data preview to write.</param>
        /// <param name="column">The name of the column to write.</param>
        public static void WritePreviewColumn(DataDebuggerPreview preview, string column)
        {
            // set up a console table
            var table = new Table(TableConfiguration.Unicode(), new ColumnHeader(column));

            // fill the table with results
            foreach (var row in preview.RowView)
            {
                foreach (var col in row.Values)
                {
                    if (col.Key == column)
                    {
                        var vector = (VBuffer <float>)col.Value;
                        table.AddRow(string.Concat(vector.DenseValues()));
                    }
                }
            }

            // write the table
            Console.WriteLine(table.ToString());
        }
예제 #9
0
        /// <summary>
        /// Helper method to write the machine learning pipeline to the console.
        /// </summary>
        /// <param name="preview">The data preview to write.</param>
        public static void WritePreview(DataDebuggerPreview preview)
        {
            // set up a console table
            var table = new Table(
                TableConfiguration.Unicode(),
                preview.ColumnView.Select(c => new ColumnHeader(c.Column.Name)).ToArray());

            // fill the table with results
            foreach (var row in preview.RowView)
            {
                table.AddRow((from c in row.Values
                              select c.Value is VBuffer <float>? "<vector>" : c.Value
                              ).ToArray());
            }

            // write the table
            Console.WriteLine(table.ToString());

            // set up a console table
            table = new Table(TableConfiguration.Unicode(), new ColumnHeader("Location"));

            // fill the table with results
            foreach (var row in preview.RowView)
            {
                foreach (var col in row.Values)
                {
                    if (col.Key == "Location")
                    {
                        var vector = (VBuffer <float>)col.Value;
                        table.AddRow(string.Concat(vector.DenseValues()));
                    }
                }
            }

            // write the table
            Console.WriteLine(table.ToString());
        }
        public void TestIDataView()
        {
            IDataView dataView = MakeDataFrameWithAllColumnTypes(10, withNulls: false);

            DataDebuggerPreview preview = dataView.Preview();

            Assert.Equal(10, preview.RowView.Length);
            Assert.Equal(15, preview.ColumnView.Length);

            Assert.Equal("Byte", preview.ColumnView[0].Column.Name);
            Assert.Equal((byte)0, preview.ColumnView[0].Values[0]);
            Assert.Equal((byte)1, preview.ColumnView[0].Values[1]);

            Assert.Equal("Decimal", preview.ColumnView[1].Column.Name);
            Assert.Equal((double)0, preview.ColumnView[1].Values[0]);
            Assert.Equal((double)1, preview.ColumnView[1].Values[1]);

            Assert.Equal("Double", preview.ColumnView[2].Column.Name);
            Assert.Equal((double)0, preview.ColumnView[2].Values[0]);
            Assert.Equal((double)1, preview.ColumnView[2].Values[1]);

            Assert.Equal("Float", preview.ColumnView[3].Column.Name);
            Assert.Equal((float)0, preview.ColumnView[3].Values[0]);
            Assert.Equal((float)1, preview.ColumnView[3].Values[1]);

            Assert.Equal("Int", preview.ColumnView[4].Column.Name);
            Assert.Equal((int)0, preview.ColumnView[4].Values[0]);
            Assert.Equal((int)1, preview.ColumnView[4].Values[1]);

            Assert.Equal("Long", preview.ColumnView[5].Column.Name);
            Assert.Equal((long)0, preview.ColumnView[5].Values[0]);
            Assert.Equal((long)1, preview.ColumnView[5].Values[1]);

            Assert.Equal("Sbyte", preview.ColumnView[6].Column.Name);
            Assert.Equal((sbyte)0, preview.ColumnView[6].Values[0]);
            Assert.Equal((sbyte)1, preview.ColumnView[6].Values[1]);

            Assert.Equal("Short", preview.ColumnView[7].Column.Name);
            Assert.Equal((short)0, preview.ColumnView[7].Values[0]);
            Assert.Equal((short)1, preview.ColumnView[7].Values[1]);

            Assert.Equal("Uint", preview.ColumnView[8].Column.Name);
            Assert.Equal((uint)0, preview.ColumnView[8].Values[0]);
            Assert.Equal((uint)1, preview.ColumnView[8].Values[1]);

            Assert.Equal("Ulong", preview.ColumnView[9].Column.Name);
            Assert.Equal((ulong)0, preview.ColumnView[9].Values[0]);
            Assert.Equal((ulong)1, preview.ColumnView[9].Values[1]);

            Assert.Equal("Ushort", preview.ColumnView[10].Column.Name);
            Assert.Equal((ushort)0, preview.ColumnView[10].Values[0]);
            Assert.Equal((ushort)1, preview.ColumnView[10].Values[1]);

            Assert.Equal("String", preview.ColumnView[11].Column.Name);
            Assert.Equal("0".AsMemory(), preview.ColumnView[11].Values[0]);
            Assert.Equal("1".AsMemory(), preview.ColumnView[11].Values[1]);

            Assert.Equal("Char", preview.ColumnView[12].Column.Name);
            Assert.Equal((ushort)65, preview.ColumnView[12].Values[0]);
            Assert.Equal((ushort)66, preview.ColumnView[12].Values[1]);

            Assert.Equal("Bool", preview.ColumnView[13].Column.Name);
            Assert.Equal(true, preview.ColumnView[13].Values[0]);
            Assert.Equal(false, preview.ColumnView[13].Values[1]);

            Assert.Equal("ArrowString", preview.ColumnView[14].Column.Name);
            Assert.Equal("foo".ToString(), preview.ColumnView[14].Values[0].ToString());
            Assert.Equal("foo".ToString(), preview.ColumnView[14].Values[1].ToString());
        }
        public void TestIDataViewWithNulls()
        {
            int       length   = 10;
            IDataView dataView = MakeDataFrameWithAllColumnTypes(length, withNulls: true);

            DataDebuggerPreview preview = dataView.Preview();

            Assert.Equal(length, preview.RowView.Length);
            Assert.Equal(15, preview.ColumnView.Length);

            Assert.Equal("Byte", preview.ColumnView[0].Column.Name);
            Assert.Equal((byte)0, preview.ColumnView[0].Values[0]);
            Assert.Equal((byte)1, preview.ColumnView[0].Values[1]);
            Assert.Equal((byte)4, preview.ColumnView[0].Values[4]);
            Assert.Equal((byte)0, preview.ColumnView[0].Values[5]); // null row
            Assert.Equal((byte)6, preview.ColumnView[0].Values[6]);

            Assert.Equal("Decimal", preview.ColumnView[1].Column.Name);
            Assert.Equal((double)0, preview.ColumnView[1].Values[0]);
            Assert.Equal((double)1, preview.ColumnView[1].Values[1]);
            Assert.Equal((double)4, preview.ColumnView[1].Values[4]);
            Assert.Equal(double.NaN, preview.ColumnView[1].Values[5]); // null row
            Assert.Equal((double)6, preview.ColumnView[1].Values[6]);

            Assert.Equal("Double", preview.ColumnView[2].Column.Name);
            Assert.Equal((double)0, preview.ColumnView[2].Values[0]);
            Assert.Equal((double)1, preview.ColumnView[2].Values[1]);
            Assert.Equal((double)4, preview.ColumnView[2].Values[4]);
            Assert.Equal(double.NaN, preview.ColumnView[2].Values[5]); // null row
            Assert.Equal((double)6, preview.ColumnView[2].Values[6]);

            Assert.Equal("Float", preview.ColumnView[3].Column.Name);
            Assert.Equal((float)0, preview.ColumnView[3].Values[0]);
            Assert.Equal((float)1, preview.ColumnView[3].Values[1]);
            Assert.Equal((float)4, preview.ColumnView[3].Values[4]);
            Assert.Equal(float.NaN, preview.ColumnView[3].Values[5]); // null row
            Assert.Equal((float)6, preview.ColumnView[3].Values[6]);

            Assert.Equal("Int", preview.ColumnView[4].Column.Name);
            Assert.Equal((int)0, preview.ColumnView[4].Values[0]);
            Assert.Equal((int)1, preview.ColumnView[4].Values[1]);
            Assert.Equal((int)4, preview.ColumnView[4].Values[4]);
            Assert.Equal((int)0, preview.ColumnView[4].Values[5]); // null row
            Assert.Equal((int)6, preview.ColumnView[4].Values[6]);

            Assert.Equal("Long", preview.ColumnView[5].Column.Name);
            Assert.Equal((long)0, preview.ColumnView[5].Values[0]);
            Assert.Equal((long)1, preview.ColumnView[5].Values[1]);
            Assert.Equal((long)4, preview.ColumnView[5].Values[4]);
            Assert.Equal((long)0, preview.ColumnView[5].Values[5]); // null row
            Assert.Equal((long)6, preview.ColumnView[5].Values[6]);

            Assert.Equal("Sbyte", preview.ColumnView[6].Column.Name);
            Assert.Equal((sbyte)0, preview.ColumnView[6].Values[0]);
            Assert.Equal((sbyte)1, preview.ColumnView[6].Values[1]);
            Assert.Equal((sbyte)4, preview.ColumnView[6].Values[4]);
            Assert.Equal((sbyte)0, preview.ColumnView[6].Values[5]); // null row
            Assert.Equal((sbyte)6, preview.ColumnView[6].Values[6]);

            Assert.Equal("Short", preview.ColumnView[7].Column.Name);
            Assert.Equal((short)0, preview.ColumnView[7].Values[0]);
            Assert.Equal((short)1, preview.ColumnView[7].Values[1]);
            Assert.Equal((short)4, preview.ColumnView[7].Values[4]);
            Assert.Equal((short)0, preview.ColumnView[7].Values[5]); // null row
            Assert.Equal((short)6, preview.ColumnView[7].Values[6]);

            Assert.Equal("Uint", preview.ColumnView[8].Column.Name);
            Assert.Equal((uint)0, preview.ColumnView[8].Values[0]);
            Assert.Equal((uint)1, preview.ColumnView[8].Values[1]);
            Assert.Equal((uint)4, preview.ColumnView[8].Values[4]);
            Assert.Equal((uint)0, preview.ColumnView[8].Values[5]); // null row
            Assert.Equal((uint)6, preview.ColumnView[8].Values[6]);

            Assert.Equal("Ulong", preview.ColumnView[9].Column.Name);
            Assert.Equal((ulong)0, preview.ColumnView[9].Values[0]);
            Assert.Equal((ulong)1, preview.ColumnView[9].Values[1]);
            Assert.Equal((ulong)4, preview.ColumnView[9].Values[4]);
            Assert.Equal((ulong)0, preview.ColumnView[9].Values[5]); // null row
            Assert.Equal((ulong)6, preview.ColumnView[9].Values[6]);

            Assert.Equal("Ushort", preview.ColumnView[10].Column.Name);
            Assert.Equal((ushort)0, preview.ColumnView[10].Values[0]);
            Assert.Equal((ushort)1, preview.ColumnView[10].Values[1]);
            Assert.Equal((ushort)4, preview.ColumnView[10].Values[4]);
            Assert.Equal((ushort)0, preview.ColumnView[10].Values[5]); // null row
            Assert.Equal((ushort)6, preview.ColumnView[10].Values[6]);

            Assert.Equal("String", preview.ColumnView[11].Column.Name);
            Assert.Equal("0", preview.ColumnView[11].Values[0].ToString());
            Assert.Equal("1", preview.ColumnView[11].Values[1].ToString());
            Assert.Equal("4", preview.ColumnView[11].Values[4].ToString());
            Assert.Equal("", preview.ColumnView[11].Values[5].ToString()); // null row
            Assert.Equal("6", preview.ColumnView[11].Values[6].ToString());

            Assert.Equal("Char", preview.ColumnView[12].Column.Name);
            Assert.Equal((ushort)65, preview.ColumnView[12].Values[0]);
            Assert.Equal((ushort)66, preview.ColumnView[12].Values[1]);
            Assert.Equal((ushort)69, preview.ColumnView[12].Values[4]);
            Assert.Equal((ushort)0, preview.ColumnView[12].Values[5]); // null row
            Assert.Equal((ushort)71, preview.ColumnView[12].Values[6]);

            Assert.Equal("Bool", preview.ColumnView[13].Column.Name);
            Assert.Equal(true, preview.ColumnView[13].Values[0]);
            Assert.Equal(false, preview.ColumnView[13].Values[1]);
            Assert.Equal(true, preview.ColumnView[13].Values[4]);
            Assert.Equal(false, preview.ColumnView[13].Values[5]); // null row
            Assert.Equal(true, preview.ColumnView[13].Values[6]);

            Assert.Equal("ArrowString", preview.ColumnView[14].Column.Name);
            Assert.Equal("foo", preview.ColumnView[14].Values[0].ToString());
            Assert.Equal("foo", preview.ColumnView[14].Values[1].ToString());
            Assert.Equal("foo", preview.ColumnView[14].Values[4].ToString());
            Assert.Equal("", preview.ColumnView[14].Values[5].ToString()); // null row
            Assert.Equal("foo", preview.ColumnView[14].Values[6].ToString());
        }