Ввод модели поезда ml.net из строки вместо файла - PullRequest
0 голосов
/ 11 июня 2018

Я использовал следующую строку кода для загрузки текстовых данных:

pipeline.Add(new TextLoader(dataPath).CreateFrom<SentimentData>(separator: ','));

Но есть ли способ вставить строку как данные?Допустим, мы хотим извлечь модель из базы данных, мне не нужно сначала сохранять строку в файл, или я делаю?

Документация на данный момент действительно скудная, но при этом блестящаяMicrosoft предоставила нам новый инструмент.

Спасибо

1 Ответ

0 голосов
/ 11 июня 2018

Вы захотите использовать CollectionDataSource, который был представлен в v0.2 ML.NET.Вы можете получить свежие биты GitHub или nuget, а затем использовать CollectionDataSource поверх перечисляемого.

Вы можете найти полный пример в его тестах: https://github.com/dotnet/machinelearning/blob/6d5a41d39face9e98c242d3db3ff10ea8e233cc1/test/Microsoft.ML.Tests/CollectionDataSourceTests.cs

Один примерпо данным радужки:

var data = new List<IrisData>() {
    new IrisData { SepalLength = 1f, SepalWidth = 1f ,PetalLength=0.3f, PetalWidth=5.1f, Label=1},
    new IrisData { SepalLength = 1f, SepalWidth = 1f ,PetalLength=0.3f, PetalWidth=5.1f, Label=1},
    new IrisData { SepalLength = 1.2f, SepalWidth = 0.5f ,PetalLength=0.3f, PetalWidth=5.1f, Label=0}
};
var collection = CollectionDataSource.Create(data);

pipeline.Add(collection);
pipeline.Add(new ColumnConcatenator(outputColumn: "Features",
    "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"));
pipeline.Add(new StochasticDualCoordinateAscentClassifier());
PredictionModel<IrisData, IrisPrediction> model = pipeline.Train<IrisData, IrisPrediction>();

IrisPrediction prediction = model.Predict(new IrisData()
{
    SepalLength = 3.3f,
    SepalWidth = 1.6f,
    PetalLength = 0.2f,
    PetalWidth = 5.1f,
});

pipeline = new LearningPipeline();
collection = CollectionDataSource.Create(data.AsEnumerable());
pipeline.Add(collection);
pipeline.Add(new ColumnConcatenator(outputColumn: "Features",
    "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"));
pipeline.Add(new StochasticDualCoordinateAscentClassifier());
model = pipeline.Train<IrisData, IrisPrediction>();
...