Tomando como referencia la entrada anterior en donde se entrena un modelo lineal con base en un unos datos acerca de la cantidad de dinero que ganan personas alrededor del mundo y su nivel de satisfacción o felicidad, se puede modificar sutilmente el código de Python (que tiene tantas librerías) para entrenar un modelo tipo K-Nearest Neighbors en lugar de uno lineal.
Es interesante este cambio, desde mi punto de vista, por al menos tres motivos:
- Nos permite ver que un conjunto de datos es susceptible de ser modelado con diferentes algoritmos, y que estos pueden entregar resultados muy similares (quizás algunos con más precisión que otros, o tal vez completamente diferentes).
- Nos permite ver la practicidad de la implementación de los modelos en Python.
- Nos permite ver el comportamiento de dos modelos de aprendizaje supervisado: el modelo lineal y el K-Nearest Neighbors.
import sklearn.neighbors
El modelo que crearemos va a tomar los 3 vecinos más cercanos al nuevo dato de entrada (los 3 países con el GDP más cercano al de Chipre)
model = sklearn.neighbors.KNeighborsRegressor(n_neighbors=3)
model.fit(X,y)
Hacemos una predicción para Chipre
X_new = [[22587]] #GDP per capita de Chipre
print(model.predict(X_new)) [[5.76666667]]
Podemos ver que con el modelo lineal el nivel de satisfacción para Chipre había sido 5.9624, y con el modelo K-Nearest Neighbors es muy similar, 5.76666. Si en lugar de usar un algoritmo de aprendizaje basado en modelos usamos uno basado en instancias, veríamos que ya que el GDP de Chipre (22587 USD) es muy similar al de Eslovenia (20732 USD), podríamos decir que la satisfacción de vida de Chipre es la misma que la de Eslovenia, 5.7. Te pregunto entonces, ¿cuál es el correcto?