scikit-learn: comment à l'échelle de retour le 'y' résultat prévu
J'essaie d'apprendre à scikit-learn
et d'Apprentissage de la Machine à l'aide de la Boston Logement de l'Ensemble de Données.
# I splitted the initial dataset ('housing_X' and 'housing_y')
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(housing_X, housing_y, test_size=0.25, random_state=33)
# I scaled those two datasets
from sklearn.preprocessing import StandardScaler
scalerX = StandardScaler().fit(X_train)
scalery = StandardScaler().fit(y_train)
X_train = scalerX.transform(X_train)
y_train = scalery.transform(y_train)
X_test = scalerX.transform(X_test)
y_test = scalery.transform(y_test)
# I created the model
from sklearn import linear_model
clf_sgd = linear_model.SGDRegressor(loss='squared_loss', penalty=None, random_state=42)
train_and_evaluate(clf_sgd,X_train,y_train)
Basé sur ce nouveau modèle clf_sgd
, je suis en train d'essayer de prédire la y
basé sur la première instance de X_train
.
X_new_scaled = X_train[0]
print (X_new_scaled)
y_new = clf_sgd.predict(X_new_scaled)
print (y_new)
Cependant, le résultat est assez étrange pour moi (1.34032174
, au lieu de 20-30
, la gamme de prix des maisons)
[-0.32076092 0.35553428 -1.00966618 -0.28784917 0.87716097 1.28834383
0.4759489 -0.83034371 -0.47659648 -0.81061061 -2.49222645 0.35062335
-0.39859013]
[ 1.34032174]
Je suppose que ce 1.34032174
valeur doit être revu à la baisse, mais je suis à essayer de comprendre comment le faire, sans succès. Tout conseil est le bienvenu. Je vous remercie beaucoup.
Je ne pense pas que vous devez appliquer la mise à l'échelle sur votre variable cible. Mise à l'échelle et d'autres disposent de techniques de génie sont appliqués uniquement sur les fonction de vecteurs.
OriginalL'auteur Hookstark | 2016-06-27
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
inverse_transform
à l'aide de votrescalery
objet:OriginalL'auteur Ryan
Peu en retard pour le jeu:
Il suffit de ne pas mettre à l'échelle votre y de la. Avec la mise à l'échelle de y vous fait perdre votre parts. La régression ou de la perte d'optimisation est en fait déterminé par le rapport des différences entre les caractéristiques. BTW pour le prix des maisons (ou toute autre valeur monétaire), il est fréquent de prendre le logarithme. Ensuite, vous avez évidemment besoin de faire un numpy.exp() pour revenir à la réalité de dollars/euros/yens...
OriginalL'auteur Maartenk