0 votes
1 view
in Machine Learning by (19k points)

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

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.

1 Answer

0 votes
by (33.2k 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.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...