Lors de la création de modèles de régression pour cette données sur les logements nous pouvons tracer les résidus en fonction des valeurs réelles.
from sklearn.linear_model import LinearRegression
X = housing[['lotsize']]
y = housing[['price']]
model = LinearRegression()
model.fit(X, y)
plt.scatter(y,model.predict(X)-y)
Nous pouvons clairement voir que la différence (prédiction - valeur réelle) est principalement positive pour les prix inférieurs, et la différence est négative pour les prix supérieurs.
C'est vrai pour la régression linéaire, car le modèle est optimisé pour la RMSE (le signe du résidu n'est donc pas pris en compte).
Mais quand on fait le KNN
from sklearn.neighbors import KNeighborsRegressor
model = KNeighborsRegressor(n_neighbors = 3)
On peut trouver un tracé similaire.
Dans ce cas, quelle interprétation pouvons-nous donner, et comment pouvons-nous améliorer le modèle.
EDIT : nous pouvons utiliser tous les autres prédicteurs, les résultats sont similaires.
housing = housing.replace(to_replace='yes', value=1, regex=True)
housing = housing.replace(to_replace='no', value=0, regex=True)
X = housing[['lotsize','bedrooms','stories','bathrms','bathrms','driveway','recroom',
'fullbase','gashw','airco','garagepl','prefarea']]
Le graphique suivant est pour KNN avec 3 voisins. Avec 3 voisins, on pourrait s'attendre à un sur-ajustement, je n'arrive pas à comprendre pourquoi il y a cette tendance.