Saltar al contenido principal
Página

Tema 6.1 - Concepto

Concepto

En una misión anterior, aprendimos sobre la validación de entrenamiento/prueba, una técnica simple para probar la precisión de un modelo de aprendizaje automático en nuevos datos en los que el modelo no fue entrenado, en esta misión, nos centraremos en técnicas más robustas, para empezar, nos centraremos en la técnica de validación de retención (holdout validation), que implica:

  • Dividir el conjunto de datos completo en 2 particiones:
  1. Un conjunto de entrenamiento
  2. Un conjunto de pruebas
      • Entrenar el modelo en el conjunto de entrenamiento
      • Utilizar el modelo entrenado para predecir etiquetas en el conjunto de pruebas
      • Calcular una métrica de error para comprender la eficacia del modelo
      • Cambiar los conjuntos de entrenamiento y de prueba y repetirlo
      • Promediar los errores


      En la validación por retención (holdout validation), solemos utilizar una división 50/50 en lugar de la división 75/25 de la validación de entrenamiento/prueba, de este modo, eliminamos el número de observaciones como fuente potencial de variación en el rendimiento de nuestro modelo.


      Empecemos por dividir el conjunto de datos en 2 mitades casi equivalentes.

      Al dividir el conjunto de datos, no olvides establecer una copia del mismo utilizando .copy() para asegurarte de que no obtienes resultados inesperados más adelante, si ejecutas el código localmente en Jupyter Notebook o Jupyter Lab sin .copy(), notarás lo que se conoce como una advertencia SettingWithCopy, esto no impedirá que tu código se ejecute correctamente, pero te está haciendo saber que cualquier operación que estés haciendo está tratando de establecerse en una copia de un slice de un dataframe, para asegurarse de no ver esta advertencia, asegúrese de incluir .copy() siempre que realice operaciones en un marco de datos.


      Instrucciones

      • Usar la función numpy.random.permutation() para barajar el orden de las filas en dc_listings
      • Seleccionar las primeras 1862 filas y asignarlas a split_one
      • Seleccionar las 1861 filas restantes y asignarlas a split_two


      import numpy as np
      import pandas as pd
      
      dc_listings = pd.read_csv("dc_airbnb.csv")
      stripped_commas = dc_listings[ 'price'].str.replace(',',
      '')
      stripped_dollars = stripped_commas.str.replace('$', '')
      dc_listings['price'] = stripped_dollars.astype('float")
      shuffled_index =
      np.random.permutation(dc_listings.index)
      dc_listings = de_listings.reindex(shuffled_index)
      
      split_one = de_listings.¡loc[0:1862].copy()
      split_two = de_listings.¡loc[1862:].copy()
      
      Última modificación: miércoles, 27 de abril de 2022, 23:47