2016-06-27 15 views
8

Tôi đang cố gắng tìm hiểu scikit-learn và Học máy bằng cách sử dụng Tập dữ liệu nhà ở Boston.scikit-learn: cách thu nhỏ kết quả được dự đoán '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) 

Dựa trên mô hình mới này clf_sgd, tôi đang cố gắng để dự đoán y dựa trên trường hợp đầu tiên của X_train.

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

Tuy nhiên, kết quả là khá kỳ lạ đối với tôi (1.34032174, thay vì 20-30, phạm vi giá của ngôi nhà)

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

Tôi đoán rằng giá trị 1.34032174 này cần được nhân rộng trở lại, nhưng tôi đang cố gắng tìm ra cách để làm điều đó không thành công. Bất kỳ mẹo nào đều được chào đón. Cảm ơn nhiều.

+0

Tôi không nghĩ rằng bạn cần phải áp dụng nhân rộng trên biến mục tiêu của bạn. Kỹ thuật quy mô và các tính năng kỹ thuật khác chỉ được áp dụng trên các vectơ đặc trưng. –

Trả lời

11

Bạn có thể sử dụng inverse_transform sử dụng đối tượng scalery của bạn:

y_new_inverse = scalery.inverse_transform(y_new) 
+0

Cảm ơn bạn. Nó hoạt động. Trong thực tế (và rõ ràng), kết quả là khá giống với giá trị của 'y_train'. – Hookstark

Các vấn đề liên quan