ML.NET: несоответствие схемы для функционального столбца «Возможности» - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь выучить ML.NET/Get для машинного обучения, но я застрял в проблеме.

Моя цель - создать обученную модель, которую можно использовать для прогнозирования города.на входе.

Этот код:

var dataPath = "cities.csv";
var mlContext = new MLContext();
var loader = mlContext.Data.CreateTextLoader<CityData>(hasHeader: false, separatorChar: ',');

var data = loader.Load(dataPath);

string featuresColumnName = "Features";

var pipeline = mlContext.Transforms.Concatenate(featuresColumnName, "PostalCode", "CityName")
        .Append(mlContext.Clustering.Trainers.KMeans(featuresColumnName, clustersCount: 3));

var model = pipeline.Fit(data);

Который должен принимать CSV в качестве ввода (Который содержит список городов (Столбец 0 = Почтовый индекс, Столбец 1= CityName), а затем добавить эти функции в конвейер, выдает следующую ошибку:

Unhandled Exception: System.ArgumentOutOfRangeException: Schema mismatch for feature column 'Features': expected Vector<R4>, got Vector<Text>

В функции "Fit".

Я немного покопался врепозиторий GitHub, но я не могу найти решение. Я работаю на примере Iris (https://docs.microsoft.com/en-us/dotnet/machine-learning/tutorials/iris-clustering) (конечно, с моими изменениями)

Есть идеи?

1 Ответ

1 голос
/ 18 марта 2019

Использование FeaturizeText для преобразования строковых элементов в массив с плавающей точкой

var pipeline = mlContext.Transforms
    .Text.FeaturizeText("PostalCodeF", "PostalCode")
    .Append(mlContext.Transforms.Text.FeaturizeText("CityNameF", "CityName"))
    .Append(mlContext.Transforms.Concatenate(featuresColumnName, "PostalCodeF", "CityNameF"))
    .Append(mlContext.Clustering.Trainers.KMeans(featuresColumnName, clustersCount: 3));

var model = pipeline.Fit(data);
...