Example #1
0
        public static CommonOutputs.TransformOutput ConcatColumns(IHostEnvironment env, ColumnCopyingTransformer.Options input)
        {
            Contracts.CheckValue(env, nameof(env));
            var host = env.Register("PrefixConcatColumns");

            host.CheckValue(input, nameof(input));
            EntryPointUtils.CheckInputArgs(host, input);

            // Get all column names with preserving order.
            var colNames = new List <string>(input.Data.Schema.Count);

            for (int i = 0; i < input.Data.Schema.Count; i++)
            {
                colNames.Add(input.Data.Schema[i].Name);
            }

            // Iterate through input options, find matching source columns, create new input options
            var inputOptions = new ColumnConcatenatingTransformer.Options()
            {
                Data = input.Data
            };
            var columns = new List <ColumnConcatenatingTransformer.Column>(input.Columns.Length);

            foreach (var col in input.Columns)
            {
                var newCol = new ColumnConcatenatingTransformer.Column();
                newCol.Name = col.Name;
                var prefix = col.Source;
                newCol.Source = colNames.Where(x => x.StartsWith(prefix, StringComparison.InvariantCulture)).ToArray();
                if (newCol.Source.Length == 0)
                {
                    throw new ArgumentOutOfRangeException("No matching columns found for prefix: " + prefix);
                }

                columns.Add(newCol);
            }
            inputOptions.Columns = columns.ToArray();

            var xf = ColumnConcatenatingTransformer.Create(env, inputOptions, inputOptions.Data);

            return(new CommonOutputs.TransformOutput {
                Model = new TransformModelImpl(env, xf, inputOptions.Data), OutputData = xf
            });
        }
        public static CommonOutputs.TransformOutput ConcatColumns(IHostEnvironment env, ColumnConcatenatingTransformer.Options input)
        {
            Contracts.CheckValue(env, nameof(env));
            var host = env.Register("ConcatColumns");

            host.CheckValue(input, nameof(input));
            EntryPointUtils.CheckInputArgs(host, input);

            var xf = ColumnConcatenatingTransformer.Create(env, input, input.Data);

            return(new CommonOutputs.TransformOutput {
                Model = new TransformModelImpl(env, xf, input.Data), OutputData = xf
            });
        }