Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PRECIO DE LA VIVIENDA EN
LONDRES
Objetivo del Tutorial 2º y clase 7/7 del Curso de Deep Learning
-En este tutorial descubrirá cómo desarrollar y evaluar modelos de redes
neuronales usando Keras para un problema de regresión.
-Cómo usar scikit-learn con Keras para evaluar modelos usando validación
cruzada.
1
import numpy
2 from pandas import read_csv
3 from keras.models import Sequential
4 from keras.layers import Dense
5 from keras.wrappers.scikit_learn import KerasRegressor
6 from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
7 from sklearn.preprocessing import StandardScaler
8 from sklearn.pipeline import Pipeline
9
Ahora podemos cargar nuestro conjunto de datos. Podemos cargar esto
fácilmente usando la librería de Pandas. Entonces podemos dividir la
entrada (X) y los atributos de salida (Y) para que sean más fáciles de
modelar con Keras y scikit-learn.
1
2 # Regresion con redes neuronales
3 import numpy
4 from pandas import read_csv
5 from keras.models import Sequential
from keras.layers import Dense
6 from keras.wrappers.scikit_learn import KerasRegressor
7 from sklearn.model_selection import cross_val_score
8 from sklearn.model_selection import KFold
9 # cargamos los datos
10 dataframe = read_csv("viviendalondres.csv", delim_whitespace=True,
header=None)
11 dataset = dataframe.values
12 # dividimos los datos entre los inputs y variables
13 X = dataset[:,0:13]
14 Y = dataset[:,13]
15 # se define el modelo base
def baseline_model():
16 # creamos el modelo
17 model = Sequential()
18 model.add(Dense(13, input_dim=13, kernel_initializer='normal',
19 activation='relu'))
model.add(Dense(1, kernel_initializer='normal'))
20 # Compilamos el modelo
21 model.compile(loss='mean_squared_error', optimizer='adam')
22 return model
23 # semilla de aletoriedad
24 seed = 7
numpy.random.seed(seed)
25 # evalua el modelo
26 estimator = KerasRegressor(build_fn=baseline_model, epochs=100,
27 batch_size=5, verbose=0)
28 kfold = KFold(n_splits=10, random_state=seed)
results = cross_val_score(estimator, X, Y, cv=kfold)
29
print("Baseline: %.2f (%.2f) MSE" % (results.mean(), results.std()))
30
31
La ejecución de este código nos da una estimación del rendimiento del
modelo en el problema de los datos no vistos. El resultado reporta el error
promedio al cuadrado incluyendo el promedio y la desviación estándar
(varianza promedio) a través de los 10 pliegues de la evaluación de
validación cruzada.
Ahora vamos a evaluar una topología de red mas amplia con el siguiente
código:
Habría sido difícil adivinar que una red más amplia superaría a una red
más profunda en este problema. Los resultados demuestran la
importancia de las pruebas ensayo y error cuando se trata de desarrollar
modelos de redes neuronales.