Karol Becerra - Valentina Muñoz - Valentina Vásquez
0
8.3252
41.0
1
8.3014
21.0
2
7.2574
52.0
3
5.6431
52.0
4
3.8462
52.0
0
462809
Male
1
462643
Female
2
466315
Female
3
461735
Male
4
462669
Female
Tratamiento de datos
Se reemplazan los datos nan por 0 y se eliminan las columnas ID y Set dado que no se consideran significativas para el modelo.
Se obtienen las dummies de las columnas correspondiente.
No se realiza la estandarización de los datos dado que las variables son continuas.
0
Male
No
1
Female
Yes
2
Female
Yes
3
Male
Yes
4
Female
Yes
5
Male
Yes
6
Male
No
7
Female
No
8
Female
Yes
9
Female
Yes
Creación de función para GridSearch
A continuación se definen los respectivos modelos y sus parámetros
Random Forest
Fitting 2 folds for each of 27 candidates, totalling 54 fits
[CV 1/2] END criterion=gini, max_depth=3, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 2/2] END criterion=gini, max_depth=3, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=gini, max_depth=3, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 2/2] END criterion=gini, max_depth=3, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 1/2] END criterion=gini, max_depth=3, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 2/2] END criterion=gini, max_depth=3, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 1/2] END criterion=gini, max_depth=5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 2/2] END criterion=gini, max_depth=5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=gini, max_depth=5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 2/2] END criterion=gini, max_depth=5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 1/2] END criterion=gini, max_depth=5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 2/2] END criterion=gini, max_depth=5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 1/2] END criterion=gini, max_depth=7, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 2/2] END criterion=gini, max_depth=7, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=gini, max_depth=7, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 2/2] END criterion=gini, max_depth=7, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 1/2] END criterion=gini, max_depth=7, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 2/2] END criterion=gini, max_depth=7, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 1/2] END criterion=entropy, max_depth=3, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.1s
[CV 2/2] END criterion=entropy, max_depth=3, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=entropy, max_depth=3, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 2/2] END criterion=entropy, max_depth=3, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 1/2] END criterion=entropy, max_depth=3, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 2/2] END criterion=entropy, max_depth=3, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 1/2] END criterion=entropy, max_depth=5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 2/2] END criterion=entropy, max_depth=5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=entropy, max_depth=5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 2/2] END criterion=entropy, max_depth=5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 1/2] END criterion=entropy, max_depth=5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 2/2] END criterion=entropy, max_depth=5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 1/2] END criterion=entropy, max_depth=7, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 2/2] END criterion=entropy, max_depth=7, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=entropy, max_depth=7, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 2/2] END criterion=entropy, max_depth=7, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 1/2] END criterion=entropy, max_depth=7, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.7s
[CV 2/2] END criterion=entropy, max_depth=7, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 1/2] END criterion=log_loss, max_depth=3, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.1s
[CV 2/2] END criterion=log_loss, max_depth=3, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.1s
[CV 1/2] END criterion=log_loss, max_depth=3, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 2/2] END criterion=log_loss, max_depth=3, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 1/2] END criterion=log_loss, max_depth=3, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 2/2] END criterion=log_loss, max_depth=3, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 1/2] END criterion=log_loss, max_depth=5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 2/2] END criterion=log_loss, max_depth=5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=log_loss, max_depth=5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 2/2] END criterion=log_loss, max_depth=5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 1/2] END criterion=log_loss, max_depth=5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 2/2] END criterion=log_loss, max_depth=5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.6s
[CV 1/2] END criterion=log_loss, max_depth=7, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 2/2] END criterion=log_loss, max_depth=7, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.2s
[CV 1/2] END criterion=log_loss, max_depth=7, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 2/2] END criterion=log_loss, max_depth=7, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.3s
[CV 1/2] END criterion=log_loss, max_depth=7, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.7s
[CV 2/2] END criterion=log_loss, max_depth=7, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 0.7s
Precisión: 0.780271154745208
Puntaje F1: 0.6739935090327006
[[ 413 12 102]
[ 64 90 135]
[ 147 10 1166]]
Mejor estimador:
RandomForestClassifier(max_depth=3, n_estimators=50)
Mejores parámetros:
{'criterion': 'gini', 'max_depth': 3, 'n_estimators': 50}
Mejor puntuación:
nan
ADABoost
Fitting 2 folds for each of 12 candidates, totalling 24 fits
[CV 1/2] END learning_rate=0.1, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 2/2] END learning_rate=0.1, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 1/2] END learning_rate=0.1, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.9s
[CV 2/2] END learning_rate=0.1, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.9s
[CV 1/2] END learning_rate=0.1, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 1.8s
[CV 2/2] END learning_rate=0.1, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 1.9s
[CV 1/2] END learning_rate=0.25, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 2/2] END learning_rate=0.25, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 1/2] END learning_rate=0.25, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.9s
[CV 2/2] END learning_rate=0.25, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.9s
[CV 1/2] END learning_rate=0.25, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 1.8s
[CV 2/2] END learning_rate=0.25, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 1.8s
[CV 1/2] END learning_rate=0.5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 2/2] END learning_rate=0.5, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 1/2] END learning_rate=0.5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.9s
[CV 2/2] END learning_rate=0.5, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.9s
[CV 1/2] END learning_rate=0.5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 1.7s
[CV 2/2] END learning_rate=0.5, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 1.7s
[CV 1/2] END learning_rate=1, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.4s
[CV 2/2] END learning_rate=1, n_estimators=50; f1_macro: (test=nan) recall: (test=nan) total time= 0.5s
[CV 1/2] END learning_rate=1, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 0.9s
[CV 2/2] END learning_rate=1, n_estimators=100; f1_macro: (test=nan) recall: (test=nan) total time= 1.1s
[CV 1/2] END learning_rate=1, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 1.8s
[CV 2/2] END learning_rate=1, n_estimators=200; f1_macro: (test=nan) recall: (test=nan) total time= 2.0s
Precisión: 0.8279569892473119
Puntaje F1: 0.7868936521467815
[[ 496 21 10]
[ 89 190 10]
[ 206 32 1085]]
Mejor estimador:
AdaBoostClassifier(learning_rate=0.1)
Mejores parámetros:
{'learning_rate': 0.1, 'n_estimators': 50}
Mejor puntuación:
nan
Support Vector Classifier (SVC)
Fitting 2 folds for each of 9 candidates, totalling 18 fits
[CV 1/2] END C=0.025, kernel=linear; f1_macro: (test=nan) recall: (test=nan) total time= 1.1s
[CV 2/2] END C=0.025, kernel=linear; f1_macro: (test=nan) recall: (test=nan) total time= 1.2s
[CV 1/2] END C=0.025, kernel=poly; f1_macro: (test=nan) recall: (test=nan) total time= 1.6s
[CV 2/2] END C=0.025, kernel=poly; f1_macro: (test=nan) recall: (test=nan) total time= 1.5s
[CV 1/2] END C=0.025, kernel=rbf; f1_macro: (test=nan) recall: (test=nan) total time= 2.3s
[CV 2/2] END C=0.025, kernel=rbf; f1_macro: (test=nan) recall: (test=nan) total time= 2.3s
[CV 1/2] END C=0.003, kernel=linear; f1_macro: (test=nan) recall: (test=nan) total time= 1.2s
[CV 2/2] END C=0.003, kernel=linear; f1_macro: (test=nan) recall: (test=nan) total time= 1.2s
[CV 1/2] END C=0.003, kernel=poly; f1_macro: (test=nan) recall: (test=nan) total time= 1.5s
[CV 2/2] END C=0.003, kernel=poly; f1_macro: (test=nan) recall: (test=nan) total time= 1.4s
[CV 1/2] END C=0.003, kernel=rbf; f1_macro: (test=nan) recall: (test=nan) total time= 2.3s
[CV 2/2] END C=0.003, kernel=rbf; f1_macro: (test=nan) recall: (test=nan) total time= 2.3s
[CV 1/2] END C=0.0035, kernel=linear; f1_macro: (test=nan) recall: (test=nan) total time= 1.2s
[CV 2/2] END C=0.0035, kernel=linear; f1_macro: (test=nan) recall: (test=nan) total time= 1.3s
[CV 1/2] END C=0.0035, kernel=poly; f1_macro: (test=nan) recall: (test=nan) total time= 1.4s
[CV 2/2] END C=0.0035, kernel=poly; f1_macro: (test=nan) recall: (test=nan) total time= 1.4s
[CV 1/2] END C=0.0035, kernel=rbf; f1_macro: (test=nan) recall: (test=nan) total time= 2.3s
[CV 2/2] END C=0.0035, kernel=rbf; f1_macro: (test=nan) recall: (test=nan) total time= 2.4s
Precisión: 0.771856007480131
Puntaje F1: 0.7282854565197003
[[ 434 20 73]
[ 70 183 36]
[ 220 69 1034]]
Mejor estimador:
SVC(C=0.025, kernel='linear')
Mejores parámetros:
{'C': 0.025, 'kernel': 'linear'}
Mejor puntuación:
nan
Análisis de la implementación de Grid Search para cada uno de los modelos
Modelo Random Forest: De acuerdo con el Grid Search, los mejores hiperparámetros para el modelo son: 50 estimadores, profundidad de 3 y criterio de 'gini'. A continuación, se realiza el análisis de las respectivas métricas:
Precisión: la precisión promedio del modelo GridSearch utilizando los mejores parámetros encontrados durante la búsqueda de hiperparámetros en cada iteración es de 0.7447405329593267.
Puntaje F1: el análisis del F1-score es importante para determinar qué tan bien un modelo puede identificar correctamente las clases positivas y negativas. Por lo anterior, este modelo al tener un resultado de 62.54% es un indicador de que el modelo está bien clasificado.
Matriz de confusión:
308 predicciones fueron correctamente clasificadas como Low Spending Score. Es el True positive de la variable Low. 83 predicciones fueron correctamente clasificadas como Average Spending Score. Es el True positive de la variable Average. 1202 predicciones fueron correctamente clasificadas como High Spending Score. Es el True positive de la variable High. 46 predicción se clasificó erróneamente como Low, cuando en realidad era Average. 112 predicciones se clasificaron erróneamente como Low, cuando en realidad eran High. 9 predicciones se clasificaron erróneamente como Average, cuando en realidad eran Low. 9 predicciones se clasificaron erróneamente como Average, cuando en realidad eran High. 210 predicciones se clasificaron erróneamente como High, cuando en realidad eran Low. 160 predicciones se clasificaron erróneamente como High, cuando en realidad eran Average.
Modelo AdaBoost: De acuerdo con el Grid Search, una tasa de aprendizaje de 0.5 y un número de 50 estimadores son los mejores hiperparámetros para el modelo. A continuación, se realiza el análisis de las respectivas métricas
Precisión: la precisión promedio del modelo GridSearch utilizando los mejores parámetros encontrados durante la búsqueda de hiperparámetros en cada iteración es de 0.8279569892473119
Puntaje F1: el análisis del F1-score es importante para determinar qué tan bien un modelo puede identificar correctamente las clases positivas y negativas. Por lo anterior, este modelo al tener un resultado de 78.68% es un indicador de que el modelo está bien clasificado, incluso mejor que el modelo RandomForest.
Matriz de confusión:
496 predicciones fueron correctamente clasificadas como Low Spending Score. Es el True positive de la variable Low. 190 predicciones fueron correctamente clasificadas como Average Spending Score. Es el True positive de la variable Average. 1085 predicciones fueron correctamente clasificadas como High Spending Score. Es el True positive de la variable High. 89 predicciones se clasificaron erróneamente como Low, cuando en realidad era Average. 206 predicciones se clasificaron erróneamente como Low, cuando en realidad eran High. 21 predicciones se clasificaron erróneamente como Average, cuando en realidad eran Low. 32 predicciones se clasificaron erróneamente como Average, cuando en realidad eran High. 10 predicciones se clasificaron erróneamente como High, cuando en realidad eran Low. 10 predicciones se clasificaron erróneamente como High, cuando en realidad eran Average.
Modelo SVC: De acuerdo con el Grid Search, un kernel lineal y un parámetro c de 0.025, son los mejores hiperparámetros para el modelo. A continuación, se realiza el análisis de las respectivas métricas
Precisión: la precisión promedio del modelo GridSearch utilizando los mejores parámetros encontrados durante la búsqueda de hiperparámetros en cada iteración es de 0.771856007480131
Puntaje F1: el análisis del F1-score es importante para determinar qué tan bien un modelo puede identificar correctamente las clases positivas y negativas. Por lo anterior, este modelo al tener un resultado de 72.82% es un indicador de que el modelo está bien clasificado.
Matriz de confusión:
434 predicciones fueron correctamente clasificadas como Low Spending Score. Es el True positive de la variable Low. 183 predicciones fueron correctamente clasificadas como Average Spending Score. Es el True positive de la variable Average. 1034 predicciones fueron correctamente clasificadas como High Spending Score. Es el True positive de la variable High. 70 predicción se clasificó erróneamente como Low, cuando en realidad era Average. 220 predicciones se clasificaron erróneamente como Low, cuando en realidad eran High. 20 predicciones se clasificaron erróneamente como Average, cuando en realidad eran Low. 69 predicciones se clasificaron erróneamente como Average, cuando en realidad eran High. 73 predicciones se clasificaron erróneamente como High, cuando en realidad eran Low. 36 predicciones se clasificaron erróneamente como High, cuando en realidad eran Average.
(14448, 8)
Realizamos los diferentes modelos
Regresión lineal:
Regresión de Ridge y su coeficiente:
Finalmente, la regresión Lasso con su respectivo coeficiente:
Reg_Lin
0.5245761338156757
Ridge
0.5
0.5245764116782261
Lasso
0.5
0.745400750013645
El modelo de regresión lineal logra predecir el 61,49% de los precios (R2), y los precios generados por el modelo estarían errados en 4.17 unidades monetarias (error absoluto). Adicionalmente, en el modelo Ridge con alfa de 0.5, que logra predecir el 61,49% de los precios (R2), y los precios generados por el modelo estarían errados en 4.17 unidades monetarias (error absoluto). Finalmente, al analizar el modelo Lasso con alfa de 0.5, que logra predecir el 45,28% de los precios (R2), y los precios generados por el modelo estarían errados en 5.66 unidades monetarias (error absoluto). Según lo anterior, los modelos que más se destacan son el modelo de regresión lineal y ridge; sin embargo, por los decimales se determinó que el mejor modelo para la predicción de la variable valor medio de la vivienda es el modelo de regresión lineal.
0
0.43354320675942803
0.4335363138410242
1
0.009421014522478777
0.009421134438938982
2
-0.11251160412314444
-0.11249835654807958
3
0.6241824786487769
0.6241154000941389
4
-7.513465023660296e-06
-7.512877634212775e-06
5
-0.0032595271635436868
-0.003259510444184607
6
-0.4139749921313886
-0.4139742551589993
7
-0.42626280692210633
-0.42626109987526856