dotnet / dotnet/machinelearning-samples
The prediction of taxiTripSample dont work
Ouverte
Personne n'a encore pris cette issue.
- Langage dominant
- PowerShell
- Étoiles
- 4.7k
- Forks
- 2.7k
- Merge moyen
- 2 j 22 h
- PR mergées (30 j)
- 1
Description
https://docs.microsoft.com/en-us/dotnet/machine-learning/tutorials/predict-prices
Goal:
Predict that you retrieve the value 15.5 based on the instruction
var taxiTripSample = new TaxiTrip()
{
VendorId = "VTS",
RateCode = "1",
PassengerCount = 1,
TripTime = 1140,
TripDistance = 3.75f,
PaymentType = "CRD",
FareAmount = 0 // To predict. Actual/Observed = 15.5
};
Problem:
When I do the prediction based on the data above, I get value 0 for the FareAmount after the prediction process.
What part am I missing from the source code?
Info:
*I have used the data from the link
https://github.com/dotnet/machinelearning/blob/master/test/data/taxi-fare-train.csv
Thank you!
//*****************************************************************************************
//* *
//* This is an auto-generated file by Microsoft ML.NET CLI (Command-Line Interface) tool. *
//* *
//*****************************************************************************************
using System;
using System.IO;
using System.Linq;
using Microsoft.ML;
using Machinelearning_test2ML.Model.DataModels;
using machinelearning_test2ML.ConsoleApp;
namespace Machinelearning_test2ML.ConsoleApp
{
class Program
{
//Machine Learning model to load and use for predictions
private const string MODEL_FILEPATH = @"MLModel.zip";
//Dataset to use for predictions
private const string DATA_FILEPATH = @"C:{ }";
static void Main(string[] args)
{
MLContext mlContext = new MLContext();
// Training code used by ML.NET CLI and AutoML to generate the model
//ModelBuilder.CreateModel();
ITransformer mlModel = mlContext.Model.Load(GetAbsolutePath(MODEL_FILEPATH), out DataViewSchema inputSchema);
var predEngine = mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(mlModel);
// Create sample data to do a single prediction with it
ModelInput sampleData = CreateSingleDataSample(mlContext, DATA_FILEPATH);
// Try a single prediction
ModelOutput predictionResult = predEngine.Predict(sampleData);
Console.WriteLine($"Single Prediction --> Actual value: {sampleData.Fare_amount} | Predicted value: {predictionResult.Score}");
//------------
IDataView dataView = mlContext.Data.LoadFromTextFile<TaxiTrip>(DATA_FILEPATH, hasHeader: true, separatorChar: ',');
var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "FareAmount");
var model = pipeline.Fit(dataView);
var predictionFunction = mlContext.Model.CreatePredictionEngine<TaxiTrip, TaxiTripFarePrediction>(model);
var taxiTripSample = new TaxiTrip()
{
VendorId = "VTS",
RateCode = "1",
PassengerCount = 1,
TripTime = 1140,
TripDistance = 3.75f,
PaymentType = "CRD",
FareAmount = 0 // To predict. Actual/Observed = 15.5
};
var prediction = predictionFunction.Predict(taxiTripSample);
//------------------
Console.WriteLine("=============== End of process, hit any key to finish ===============");
Console.ReadKey();
}
// Method to load single row of data to try a single prediction
// You can change this code and create your own sample data here (Hardcoded or from any source)
private static ModelInput CreateSingleDataSample(MLContext mlContext, string dataFilePath)
{
// Read dataset to get a single row for trying a prediction
IDataView dataView = mlContext.Data.LoadFromTextFile<ModelInput>(
path: dataFilePath,
hasHeader: true,
separatorChar: '\t',
allowQuoting: true,
allowSparse: false);
// Here (ModelInput object) you could provide new test data, hardcoded or from the end-user application, instead of the row from the file.
ModelInput sampleForPrediction = mlContext.Data.CreateEnumerable<ModelInput>(dataView, false)
.First();
return sampleForPrediction;
}
public static string GetAbsolutePath(string relativePath)
{
FileInfo _dataRoot = new FileInfo(typeof(Program).Assembly.Location);
string assemblyFolderPath = _dataRoot.Directory.FullName;
string fullPath = Path.Combine(assemblyFolderPath, relativePath);
return fullPath;
}
}
}
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez dans le code Program.Main affiché et comparez le tutoriel sur les tarifs de taxi avec test/data/taxi-fare-train.csv, en vous concentrant sur le pipeline utilisé avant la prédiction. Reproduisez la prédiction de taxiTripSample et vérifiez que le sample terminé produit le FareAmount attendu de 15.5 plutôt que 0.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp, machine-learning
- Domaine
- machine-learning
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100