Al aumentar el valor de k de 1 a 6, el valor de MSE disminuyó de aproximadamente 26.364 a aproximadamente 13.657. Sin embargo, al aumentar el valor de k de 7 a 20, el valor MSE no disminuyó más, sino que se mantuvo entre 14.288 y 14.870 aproximadamente, esto significa que el valor óptimo de k es 6, ya que dio lugar al valor MSE más bajo, este patrón es algo que notará al realizar la búsqueda de cuadrícula en otros modelos también, al principio, al aumentar k, la tasa de error disminuye hasta cierto punto, pero luego rebota y vuelve a aumentar, confirmemos este comportamiento visualmente utilizando un gráfico de dispersión.
|
|
import matplotlib.pyplot as plt features = ['accommodates', 'bedrooms', 'bathrooms', 'number_of_reviews'] hyper_params = [x for x in range(1, 21)] mse_values = list() for hp in hyper_params: knn = KNeighborsRegressor (n_neighbors=hp, algorithm="brute') knn.fit(train_df[features], train_df[ 'price']) predictions = knn.predict(test_df[features]) mse = mean_squared_error(test_df('price'], predictions) mse_values .append (mse) plt.scatter(hyper_params, mse_values) plt.show() |
El primer modelo, que utilizó las columnas de accommodates y bathrooms, pudo alcanzar un valor de MSE de aproximadamente 14.790, el segundo modelo, que añadía la columna de bedrooms, consiguió un valor de MSE de aproximadamente 13.522,9, que es incluso inferior al valor de MSE más bajo que conseguimos utilizando el mejor modelo de la última misión (que utilizaba las columnas de accommodates, bedrooms, bathrooms y numbers_of_reviews), esperemos que esto demuestre que el uso de una sola palanca para encontrar el mejor modelo no es suficiente y que es necesario utilizar ambas palancas en conjunto.
En esta misión, hemos aprendido sobre la optimización de hiperparámetros y el flujo de trabajo para encontrar el modelo óptimo para hacer predicciones, lo siguiente en este curso es un reto, en el que practicarás los conceptos que has aprendido hasta ahora en un conjunto de datos completamente nuevo.