En este artículo usaré las redes neuronales profundas para predecir el precio de la vivienda usando un dataset de Kaggle.
Las redes neuronales profundas son bien conocidas por los problemas de clasificación, por ejemplo, se usan en la clasificación de los dígitos escritos a mano, pero la pregunta es ¿será fructífero si las usamos para los problemas de regresión?
Puede descargar el dataset de Aquí
Le recomiendo que siga intente ejecutar el código usando mi computadora portátil en Google colab [ Aquí ]
Contenido:
1- Procesar el dataset
2- Crear la red neuronal profunda
3- Entrenar al DNN
4- Probar el DNN
5- Compare el resultado del DNN con otro algoritmo ML
Primero que nada, importaremos las dependencias necesarias:
https://medium.com/media/7ae5d71445700640f4d0f8ee3bda3ae9/href
Primero: Procesando el dataset
No profundizaremos en el procesamiento del dataset, todos queremos hacer es preparar el dataset para alimentar nuestros modelos.
Nos deshaceremos de cualquier característica con valores perdidos, luego codificaremos las características categóricas, eso es todo.
Cargue el dataset:
- Cargue datos de trenes y pruebas en pandas DataFrames
- Combine datos de trenes y pruebas para procesarlos juntos
https://medium.com/media/74079f4f16be0ad386e8d2aca2597324/href
combined.describe ()
vamos a definir una función para obtener las columnas que no tienen valores faltantes
https://medium.com/media/8c021174c209be26f75c4be0dd229f72/href
Obtenga las columnas que no tienen valores faltantes.
https://medium.com/media/5d65e167f81695523e9196b6bfc70f2e/href
Histograma de las características
La correlación entre las características
https://medium.com/media/b3ed302f304a5cf5af247cc54669a33b/href
Del mapa de calor de correlación anterior, vemos que alrededor de 15 características están altamente correlacionadas con el objetivo.
One Hot Encode Las características categóricas:
Codificaremos las características categóricas con una codificación en caliente.
https://medium.com/media/a3b4f4ee54dbf5f43f351d88fd41adf1/href
[out]: Había 45 columnas antes de codificar las características categóricas . ] Ahora, divida la combinación de dataFrame con datos de entrenamiento y datos de prueba
https://medium.com/media/81f63e7e65c70060758a307339ec98db/href
Segundo: haga redes neuronales profundas
- Defina un modelo secuencial
- Agregar Algunas capas densas
- Nosotros e ‘ relu ‘ como la función de activación para las capas ocultas
- Use un inicializador ‘ normal ‘ como el inicializador kernal
Los inicializadores definen la manera de establecer los pesos aleatorios iniciales de Capas de Keras.
- Usaremos mean_absolute_error como una función de pérdida
- Definir la capa de salida con un solo nodo
- Usar ‘ linear ‘ como la función de activación para la capa de salida
https : //medium.com/media/7e1117f942b466a5e040a9044956781c/href
[Out]: _________________________________________________________________ Layer (type) Output Shape Param # =================== ============================================== dense_1 (denso) (Ninguno, 128) 19200 _________________________________________________________________ dense_2 (Denso) (Ninguno, 256) 33024 ____________________________________ _____________________________ dense_3 (Denso) (Ninguno, 256) 65792 _________________________________________________________________ denso_ (Denso) (Ninguno, 256) 65792 _________________________________________________________________ denso_5 (Denso) (Ninguno, 1) 257 ================= ============================================= Parámetros totales : 184,065 parametros entrenables: 184,065 parametros no capacitables: 0 _________________________________________________________________
Defina una devolución de llamada de punto de control:
[out]: Entrene en 1168 muestras, valide en 292 muestras Época 1/500 1168/6868 - 0s 266us / step - pérdida: 19251.8903 - mean_absolute_error: 19251.8903 - val_l oss: 23041.8968 - val_mean_absolute_error: 23041.8968 Época 00001: val_loss no mejoró desde 21730.93555 Época 2/500 1168/1168 [==============================] - 0s 268us / paso - pérdida: 18180.4985 - mean_absolute_error: 18180.4985 - val_loss : 22197.7991 - val_mean_absolute_error: 22197.7991 Época 00002: val_loss no mejoró desde 21730.93555 . . . Época 00500: val_loss no mejoró desde 18738.19831
https: // medium .com / media / 19deb04e60483f19184d177cbf20f6a2 / href
Vemos que la pérdida de validación del mejor modelo es 18738.19
Cuarto: pruebe el modelo
Enviaremos las predicciones sobre los datos de prueba a Kaggle y veremos qué tan bien están El modelo es.
https://medium.com/media/1651eb80da6d4b34a652e9f7c5e61646/href
No está nada mal, con algo más de preprocesamiento y más capacitación, y puede hacerlo mejor.
Quinto: Tr y otro algoritmo ML:
Ahora, probemos otro algoritmo ML para comparar los resultados.
Usaremos regresores de bosque aleatorios y XGBRegressor.
Dividiremos datos de entrenamiento para entrenamiento y validación de datos
https://medium.com/media/d117b5b0522e6d2eb5ae8c7899367c0e/href
Probaremos primero el modelo de bosque aleatorio:
https://medium.com/media/138b1513f179e019b2276dd7df6caee7/href
Validación de bosque aleatorio MAE = 19089.71589041096
Haga un archivo de envío y envíelo a Kaggle para ver el resultado:
https://medium.com/media/7358faff9bfc037525b1b56ba1cba6b2/href