ML .net чтение в таблице данных разделенных вкладкой - PullRequest
0 голосов
/ 28 декабря 2018

Это мой первый раз, когда я использую ML.net 0.8, и у меня возникают проблемы с загрузкой в ​​моем наборе данных.

var mlContext = new MLContext();

        String dataPath = "ML Data 3.txt";
        var trainingDataView = mlContext.Data.ReadFromTextFile(
            columns: new TextLoader.Column[]
            {
                new TextLoader.Column("Product", DataKind.Text,0),
                new TextLoader.Column("Streat", DataKind.R4, 1),
                new TextLoader.Column("Overspray", DataKind.R4,2),
                new TextLoader.Column("MLS",DataKind.R4,3),
                new TextLoader.Column("Moisture",DataKind.R4,4)
            }, path: dataPath );


        var data = trainingDataView.Preview();

        var pipeline = mlContext.Transforms.Concatenate("Features", "Product", "Streat", "Overspray", "MLS")
            .Append(mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumn: "Moisture", featureColumn: "Features"))
            .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedMoisture"));


        var model = pipeline.Fit(trainingDataView);

Предварительный просмотр данных выглядит хорошо, однако, когда он пытается соответствовать для выполнения операции Fit, яполучить следующую ошибку:

System.InvalidOperationException: «Столбец Streat» имеет значения R4, которые не совпадают с ранее наблюдаемым типом текста. '

У меня естьпроверил данные и в файле данных нет текстовых элементов, кроме столбца «Продукт».

SampleDataSet

Любой совет получен.

1 Ответ

0 голосов
/ 04 января 2019

MulticlassClassification алгоритм не будет работать с текстовыми объектами, только числами.Если Product является каким-либо идентификатором, вам лучше исключить его из вызова Concatenate, поскольку это не функция:

mlContext.Transforms.Concatenate("Features", "Streat", "Overspray", "MLS")

Если это какая-то категория и ее следует использовать в качестве функцииВы можете преобразовать его в число с помощью одного из преобразований, например OneHotEncoding:

var pipeline = mlContext.Transforms.Categorical.OneHotEncoding("Product")
        .Append(mlContext.Transforms.Concatenate("Features", "Product", "Streat", "Overspray", "MLS"))
        .Append(mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(labelColumn: "Moisture", featureColumn: "Features"))
        .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedMoisture"));
...