public FieldAwareFactorizationMachineScalarRowMapper(IHostEnvironment env, RoleMappedSchema schema, DataViewSchema outputSchema, FieldAwareFactorizationMachineModelParameters pred) { Contracts.AssertValue(env); Contracts.AssertValue(schema); Contracts.CheckParam(outputSchema.Count == 2, nameof(outputSchema)); Contracts.CheckParam(outputSchema[0].Type is NumberDataViewType, nameof(outputSchema)); Contracts.CheckParam(outputSchema[1].Type is NumberDataViewType, nameof(outputSchema)); Contracts.AssertValue(pred); _env = env; _columns = schema.GetColumns(RoleMappedSchema.ColumnRole.Feature).ToArray(); _pred = pred; var inputFeatureColumns = _columns.Select(c => new KeyValuePair <RoleMappedSchema.ColumnRole, string>(RoleMappedSchema.ColumnRole.Feature, c.Name)).ToList(); InputRoleMappedSchema = new RoleMappedSchema(schema.Schema, inputFeatureColumns); OutputSchema = outputSchema; _inputColumnIndexes = new List <int>(); foreach (var kvp in inputFeatureColumns) { if (schema.Schema.TryGetColumnIndex(kvp.Value, out int index)) { _inputColumnIndexes.Add(index); } } }