Классификация ML.NET уже нормализованных данныхC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Классификация ML.NET уже нормализованных данных

Сообщение Anonymous »

У меня есть файлы с меткой (3 варианта) в первом столбце, за которой следуют ~300 уже нормализованных столбцов (удвоения в диапазоне 0–1).
Я знаю, что у меня есть чтобы:
  • Поместить мои данные в DataView
  • Разделить данные для обучения и тестирования
  • Создайте конвейер (здесь нужна помощь)
  • Обучите модель
  • Сохраните и оцените ее
Класс данных называется «Frame».

Код: Выделить всё

internal class Frame
{
[LoadColumn(0), ColumnName("Label")] public string Label { get; set; }
[LoadColumn(1, 302), VectorType(302)] public float[] Features { get; set; }
}
Класс результатов называется «OutcomePrediction».

Код: Выделить всё

internal class OutcomePrediction
{
[ColumnName("PredictedLabel")] public string PredictedLabel { get; set; }
}
Я не понимаю, как не нормализовать мои данные снова.
Мне трудно понять, где использовать преобразования ключ/значение.
В настоящее время мое понимание очень расплывчато.
Я зашел так далеко прямо сейчас. По сути, я пытался следовать документации:
https://learn.microsoft.com/en-us/dotne ... ata-ml-net
https://learn.microsoft.com/en-us/dotne ... del-ml-net

Код: Выделить всё

private const string DIR = @"C:\Users\\Desktop\Sample";

private static readonly DirectoryInfo directory = new(DIR);
private static readonly MLContext mlContext = new(seed: 0);

static void Main(string[] args)
{
// §0 Load from files (probably ok)
TextLoader textLoader = mlContext.Data.CreateTextLoader(separatorChar: ',', hasHeader: true);
IDataView data = textLoader.Load(directory.GetFiles().Select(file => file.FullName).ToArray());

// §1 Split Data (probably ok)
TrainTestData dataSplit = mlContext.Data.TrainTestSplit(data, testFraction: 0.2);
IDataView trainData = dataSplit.TrainSet;
IDataView testData = dataSplit.TestSet;

// §2 My try at parsing the data (probably faulty)
EstimatorChain dataPrepEstimator =
mlContext.Transforms.Concatenate("Features", "Features")
.Append(mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "LabelKey", inputColumnName: "Label"))
.Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "LabelKey"));

// §3 The transformer, even though I dont really need to transform anything but the "Label" (into a key)
//    throws System.ArgumentOutOfRangeException:
//   'Schema mismatch for label column 'LabelKey': expected Single, got Key Arg_ParamName_Name'
TransformerChain dataPrepTransformer =
dataPrepEstimator.Fit(trainData);

// §4 Not sure if this is needed
IDataView transformedTrainingData = dataPrepTransformer.Transform(trainData);

// §5 Trainer (probably ok)
SdcaRegressionTrainer sdcaEstimator = mlContext.Regression.Trainers.Sdca();

// §6 Training (maybe ok)
RegressionPredictionTransformer trainedModel =
sdcaEstimator.Fit(transformedTrainingData);
LinearRegressionModelParameters trainedModelParameters = trainedModel.Model;

// §7 Testing (probably ok)
IDataView transformedTestData = dataPrepTransformer.Transform(testData);
IDataView testDataPredictions = trainedModel.Transform(transformedTestData);
RegressionMetrics trainedModelMetrics = mlContext.Regression.Evaluate(testDataPredictions);
double rSquared = trainedModelMetrics.RSquared;
Console.WriteLine($"r²: {rSquared}");
}
Как вы могли видеть в §3, выдается ошибка. Скорее всего, это связано с ошибкой в ​​§2, где я создаю EstimatorChain. Ошибка связана с преобразованием ключ/значение атрибута «Ярлык».

Подробнее здесь: https://stackoverflow.com/questions/791 ... lized-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»