2016-06-27 9 views
8

वापस स्केल करने के लिए कैसे करें मैं बोस्टन हाउसिंग डेटा सेट का उपयोग कर scikit-learn और मशीन लर्निंग सीखने की कोशिश कर रहा हूं।scikit-learn: 'y' अनुमानित परिणाम

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

इस नए मॉडल clf_sgd आधार पर, मैं X_train का पहला उदाहरण के आधार पर y भविष्यवाणी करने के लिए कोशिश कर रहा हूँ।

X_new_scaled = X_train[0] 
print (X_new_scaled) 
y_new = clf_sgd.predict(X_new_scaled) 
print (y_new) 

हालांकि, परिणाम मेरे लिए काफी अजीब है (, 1.3403217420-30 के बजाय, मकान की कीमत की रेंज)

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

मैं जिसका अनुमान इस 1.34032174 मूल्य वापस बढ़ाया जाना चाहिए, लेकिन मैं यह समझने की कोशिश कर रहा हूं कि बिना किसी सफलता के इसे कैसे किया जाए। किसी भी टिप का स्वागत है। आपका बहुत बहुत धन्यवाद।

+0

मुझे नहीं लगता कि आप अपने लक्ष्य चर पर स्केलिंग लागू करने की आवश्यकता है। स्केलिंग और अन्य फीचर इंजीनियरिंग तकनीक केवल फीचर वैक्टर पर लागू होती हैं। –

उत्तर

11

आप अपने scalery वस्तु का उपयोग कर inverse_transform उपयोग कर सकते हैं:

y_new_inverse = scalery.inverse_transform(y_new) 
+0

धन्यवाद। यह काम करता हैं। वास्तव में (और जाहिर है), परिणाम 'y_train' के मूल्य के समान है। – Hookstark

संबंधित मुद्दे