Pop

Curso Tensorflow con Anaconda -9. Ejemplo entrenamiento y validación(1)

9. Ejemplo entrenamiento y validación(1)


  • En el vídeo anterior vimos como utilizar un conjunto de datos de entrenamiento y otro de prueba. Esto nos permitía entrenar un conjunto de ejemplos y luego probar el modelo con un conjunto de ejemplos diferente. En la siguiente  figura  tenemos una posible representación gráfica del uso de este enfoque.Donde "Ajustar el modelo" significa modificar  cualquier aspecto que puedas imaginar del modelo. Al final de este flujo de trabajo, elegimos el modelo que mejor se desempeñe con respecto al conjunto de prueba.


  • Podemos mejorar este enfoque  haciendo tres subconjuntos de datos en lugar de dos. Como vemos en la siguiente figura.  Este flujo de trabajo mejorado, realiza lo siguiente:
    • Selecciona el modelo que mejor se desempeñe con el conjunto de validación.
    • Verifica el modelo con respecto al conjunto de prueba.
    • Este flujo de trabajo es más eficaz porque crea menos exposiciones al conjunto de prueba.

  • Os dejo el vídeo donde vemos un ejemplo de código sobre este tema:

  • Como siempre os dejo el código visto en el vídeo:
#Vamos a trabajar con múltiples funciones, así que modularizaremos la lógica para preprocesarlas funciones
from __future__ import print_function
import math
from IPython import display
from matplotlib import cm
from matplotlib import gridspec
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
from sklearn import metrics
import tensorflow as tf
from tensorflow.python.data import Dataset

tf.logging.set_verbosity(tf.logging.ERROR)
pd.options.display.max_rows = 10
pd.options.display.float_format = '{:.1f}'.format

california_housing_dataframe = pd.read_csv("https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv", sep=",")

california_housing_dataframe = california_housing_dataframe.reindex(
np.random.permutation(california_housing_dataframe.index))

def preprocess_features(california_housing_dataframe):
  """Prepara las características de entrada del conjunto de datos de vivienda de California.
  Args:
california_housing_dataframe: Contenedor que tendrá los datos de vivienda
  Returns:
Un DataFrame que contiene las características que se utilizarán para el modelo.
  """
  selected_features = california_housing_dataframe[
["latitude",
"longitude",
"housing_median_age",
"total_rooms",
"total_bedrooms",
"population",
"households",
"median_income"]]
  processed_features = selected_features.copy()
# Crea una característica sintética.
  processed_features["rooms_per_person"] = (
california_housing_dataframe["total_rooms"] /
california_housing_dataframe["population"])
  return processed_features

def preprocess_targets(california_housing_dataframe):
  """Prepara características de destino (etiquetas) a partir del conjunto de datos de viviendas de California.
  Args:
california_housing_dataframe: Contenedor que tendrá los datos de vivienda
  Returns:
   Un DataFrame que contiene la característica de destino.
  """
  output_targets = pd.DataFrame()
  # Ponemos el objetivo (target) en miles de dolares
  output_targets["median_house_value"] = (
california_housing_dataframe["median_house_value"] / 1000.0)
  return output_targets
  
#Para el conjunto de entrenamiento, elegiremos los primeros 12000 ejemplos, de un total de #17000.
training_examples = preprocess_features(california_housing_dataframe.head(12000))
training_examples.describe()

training_targets = preprocess_targets(california_housing_dataframe.head(12000))
training_targets.describe()

#Para el conjunto de validación, elegiremos los últimos 5000 ejemplos, de un total de 17000.
validation_examples = preprocess_features(california_housing_dataframe.tail(5000))
validation_examples.describe()

validation_targets = preprocess_targets(california_housing_dataframe.tail(5000))
validation_targets.describe()

plt.figure(figsize=(13, 8))

ax = plt.subplot(1, 2, 1)
ax.set_title("Conjunto datos validación")

ax.set_autoscaley_on(False)
ax.set_ylim([32, 43])
ax.set_autoscalex_on(False)
ax.set_xlim([-126, -112])
plt.scatter(validation_examples["longitude"],
validation_examples["latitude"],
cmap="coolwarm",
c=validation_targets["median_house_value"] / validation_targets["median_house_value"].max())

ax = plt.subplot(1,2,2)
ax.set_title("Conjunto datos entrenamiento")

ax.set_autoscaley_on(False)
ax.set_ylim([32, 43])
ax.set_autoscalex_on(False)
ax.set_xlim([-126, -112])
plt.scatter(training_examples["longitude"],
training_examples["latitude"],
cmap="coolwarm",
c=training_targets["median_house_value"] / training_targets["median_house_value"].max())
_ = plt.plot()

No hay comentarios:

Publicar un comentario

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...