Tutorial: Predicción de precios mediante regresión con el Generador de modelos
En este tutorial, aprenderá a usar ML.NET Generador de modelos para crear un modelo de regresión para predecir los precios. La aplicación de consola .NET que desarrolla en este tutorial predice tarifas de taxi basadas en los datos históricos de tarifas de taxi de Nueva York.
- Preparación y comprensión de los datos
- Creación de un archivo de configuración del Generador de modelos
- Elección de un escenario
- Carga de los datos
- Entrenamiento del modelo
- Evaluación del modelo
- Uso del modelo para predicciones
La plantilla de predicción de precios del Generador de modelos se puede usar para cualquier escenario que requiera un valor numérico de predicción. Entre los escenarios de ejemplo se incluyen: predicción de precios internos, predicción de demanda y previsión de ventas.
Prerrequisitos
Para obtener una lista de los requisitos previos e instrucciones de instalación, visite la guía de instalación de Model Builder.
Creación de una aplicación de consola
Cree una aplicación de consola en C# llamada "TaxiFarePrediction". Asegúrese de que Colocar la solución y el proyecto en el mismo directorio esté desactivada.
Preparación y comprensión de los datos
Cree un directorio denominado Data en el proyecto para almacenar los archivos del conjunto de datos.
El conjunto de datos que se usa para entrenar y evaluar el modelo de aprendizaje automático es originalmente del conjunto de datos nyc TLC Taxi Trip.
Para descargar el conjunto de datos, vaya al vínculo de descarga taxi-fare-train.csv.
Cuando se cargue la página, haga clic con el botón derecho en cualquier lugar de la página y seleccione Guardar como.
Utiliza el cuadro de diálogo Guardar como para guardar el archivo en la carpeta Datos que creaste en el paso anterior.
En Explorador de soluciones, haga clic con el botón derecho en el archivo taxi-fare-train.csv y seleccione Propiedades. En Avanzadas, cambie el valor de Copiar en el directorio de salida por Copiar si es posterior.
Cada fila del conjunto de datos taxi-fare-train.csv
contiene detalles de los viajes realizados por un taxi.
Abra el conjunto de datos taxi-fare-train.csv
El conjunto de datos proporcionado contiene las columnas siguientes:
- vendor_id: El identificador del proveedor de taxis es una característica.
- rate_code: el tipo de tarifa del viaje en taxi es una característica.
- passenger_count: El número de pasajeros del viaje es una característica.
- trip_time_in_secs: La cantidad de tiempo que tomó el viaje. Por ejemplo, si quiere calcular la tarifa del viaje antes de que termine En ese momento no sabes cuánto tiempo tardaría el viaje. Por lo tanto, el tiempo de viaje no es una característica y excluirá esta columna del modelo.
- trip_distance: La distancia del viaje es una característica.
- payment_type: El método de pago (efectivo o tarjeta de crédito) es una característica.
- fare_amount: la tarifa de taxi total pagada es la etiqueta.
label
es la columna que quiere predecir. Al realizar una tarea de regresión, el objetivo es predecir un valor numérico. En este escenario de predicción de precios, se predice el costo de un viaje en taxi. Por lo tanto, fare_amount es la etiqueta. Los features
identificados son los datos de entrada que usted proporciona al modelo para predecir el label
. En este caso, el resto de las columnas con la excepción de trip_time_in_secs se usan como características o entradas para predecir el importe de la tarifa.
Creación de un archivo de configuración del Generador de modelos
Al agregar por primera vez Model Builder a la solución, se le pedirá que cree un archivo mbconfig
. El archivo mbconfig
realiza un seguimiento de todo lo que hace en el Generador de modelos para permitirle volver a abrir la sesión.
- En el Explorador de soluciones, haga clic con el botón derecho en el proyecto TaxiFarePrediction y seleccione Agregar>Modelo de Machine Learning.
- Asigne el nombre
mbconfig
TaxiFarePredictional proyecto y haga clic en el botón Agregar.
Elección de un escenario
Para entrenar el modelo, debe seleccionar en la lista de escenarios de aprendizaje automático disponibles proporcionados por Model Builder. En este caso, el escenario es Value prediction
.
- En el paso del escenario de la herramienta Model Builder, seleccione el escenario Predicción de valores.
Selección del entorno
El Generador de modelos puede ejecutar el entrenamiento en distintos entornos en función del escenario seleccionado.
- Confirme que el elemento
Local (CPU)
está seleccionado y haga clic en el botón paso siguiente.
Carga de los datos
El Generador de modelos acepta datos de dos orígenes, una base de datos de SQL Server o un archivo local en formato csv o tsv.
- En el paso de datos de la herramienta Model Builder, elija Archivo en la selección del tipo de origen de datos.
- Seleccione el botón Examinar situado junto al cuadro de texto y use el Explorador de archivos para examinar y seleccionar el taxi-fare-test.csv en el directorio de datos
- Elija fare_amount en el menú desplegable Column to Predict (Label) (Columna para la predicción [etiqueta]).
- Haga clic en el vínculo Opciones de datos avanzadas.
- En la pestaña Configuración de columnas, seleccione la lista desplegable Propósito para la columna trip_time_in_secs, y seleccione Omitir para excluirla como característica durante el entrenamiento. Haga clic en el botón Guardar para cerrar el cuadro de diálogo.
- Haga clic en el botón Paso siguiente.
Entrenamiento del modelo
La tarea de aprendizaje automático que se usa para entrenar el modelo de predicción de precios en este tutorial es regresión. Durante el proceso de entrenamiento del modelo, Model Builder entrena modelos independientes mediante distintos algoritmos de regresión y configuraciones para encontrar el modelo de mejor rendimiento para el conjunto de datos.
El tiempo necesario para que el modelo se entrene sea proporcional a la cantidad de datos. Model Builder selecciona automáticamente un valor predeterminado para Tiempo de entrenamiento (segundos) en función del tamaño del origen de datos.
- Deje el valor predeterminado tal como está para Tiempo de entrenamiento (segundos) a menos que prefiera entrenar durante más tiempo.
- Seleccione Iniciar entrenamiento.
Durante el proceso de entrenamiento, los datos de progreso se muestran en la sección Training results
del paso de entrenamiento.
- El estado muestra el estado de finalización del proceso de entrenamiento.
- La mejor precisión muestra la precisión del modelo de mejor rendimiento encontrado por model Builder hasta ahora. Una mayor precisión significa que el modelo predijo más correctamente en los datos de prueba.
- El mejor algoritmo muestra el nombre del algoritmo de mejor rendimiento que ha realizado el Generador de modelos hasta ahora.
- El último algoritmo muestra el nombre del algoritmo usado más recientemente por el Generador de modelos para entrenar el modelo.
Una vez completado el entrenamiento, el archivo mbconfig
tendrá el modelo generado llamado TaxiFarePrediction.zip
después del entrenamiento y dos archivos de C# con él:
- TaxiFare.consumption.cs: este archivo tiene un método público que cargará el modelo y creará un motor de predicción con él y devolverá la predicción.
- TaxiFare.training.cs: este archivo consta de la canalización de entrenamiento con la que model Builder ha creado el mejor modelo, incluidos los hiperparámetros que usó.
Haga clic en el botón Paso siguiente para ir al paso de evaluación.
Evaluación del modelo
El resultado del paso de entrenamiento será un modelo que tenga el mejor rendimiento. En el paso de evaluación de la herramienta Model Builder, la sección Mejor modelo contendrá el algoritmo usado por el modelo con el mejor rendimiento en la entrada Modelo, junto con las métricas para ese modelo en RSquared.
Además, en la ventana Salida de Visual Studio, habrá una tabla de resumen que contiene los modelos principales y sus métricas.
Esta sección también le permitirá probar el modelo realizando una sola predicción. Ofrecerá cuadros de texto para rellenar los valores y puede hacer clic en el botón Predecir para obtener una predicción del mejor modelo. De forma predeterminada, se rellenará mediante una fila aleatoria del conjunto de datos.
Si no está satisfecho con las métricas de precisión, algunas maneras sencillas de intentar mejorar la precisión del modelo son aumentar la cantidad de tiempo para entrenar el modelo o usar más datos. De lo contrario, haga clic en Paso siguiente para ir al paso de consumo.
(Opcional) Consumo del modelo
Este paso tendrá plantillas de proyecto que puede usar para consumir el modelo. Este paso es opcional y puede elegir el método que mejor se adapte a sus necesidades sobre cómo servir el modelo.
- Aplicación de consola
- Web API
Aplicación de consola
Al agregar una aplicación de consola a la solución, se le pedirá que asigne un nombre al proyecto.
Asigne al proyecto de consola el nombre TaxiFare_Console.
Haga clic en Agregar a la solución para agregar el proyecto a la solución actual.
Ejecute la aplicación.
La salida generada por el programa debe ser similar al fragmento de código siguiente:
Predicted Fare: 15.020833
Web API
Al agregar una API web a la solución, se le pedirá que asigne un nombre al proyecto.
Asigne al proyecto de API web el nombre TaxiFare_API.
Haga clic en Agregar a la solución* para agregar el proyecto a la solución actual.
Ejecute la aplicación.
Abra PowerShell y escriba el siguiente código, en el que PORT es el puerto en el que tu aplicación está escuchando.
$body = @{ Vendor_id="CMT" Rate_code=1.0 Passenger_count=1.0 Trip_distance=3.8 Payment_type="CRD" } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
Si se ejecuta correctamente, la salida debe tener un aspecto similar al texto siguiente:
score ----- 15.020833
Contenido relacionado
Para obtener más información sobre los temas mencionados en este tutorial, visite los siguientes recursos: