1 view

I'm trying to learn scikit-learn and Machine Learning by using the Boston Housing Data Set.

# 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)

Based on this new model clf_sgd, I am trying to predict the y based on the first instance of X_train.

X_new_scaled = X_train

print (X_new_scaled)

y_new = clf_sgd.predict(X_new_scaled)

print (y_new)

However, the result is quite odd for me (1.34032174, instead of 20-30, the range of the price of the houses)

[-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]

I guess that this 1.34032174 value should be scaled back, but I am trying to figure out how to do it with no success. Any tip is welcome. Thank you very much.

by (33.1k points)

You can use inverse_transform using your object:

y_new_inverse = scalery.inverse_transform(y_new)

Hope this answer helps you! For more details, go through Machine Learning Certification Course and also study the Scikit Learn Cheat Sheet.