Как инвертировать регрессионные прогнозы после конвейера? - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь выяснить, как масштабировать мои данные (предположительно, используя inverse_transform) для прогнозов, когда я использую конвейер.Данные ниже являются лишь примером.Мои фактические данные намного больше и сложнее, но я собираюсь использовать RobustScaler (поскольку мои данные имеют выбросы) и Lasso (так как мои данные имеют десятки бесполезных функций).Я новичок в трубопроводах в целом.

По сути, если я пытаюсь использовать эту модель для предсказания чего-либо, я хочу, чтобы это предсказание было представлено в немасштабном выражении.Это возможно с конвейером?Как я могу сделать это с помощью inverse_transform?

import pandas as pd
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import RobustScaler

data = [[100, 1, 50],[500 , 3, 25],[1000 , 10, 100]]
df = pd.DataFrame(data,columns=['Cost','People', 'Supplies'])

X = df[['People', 'Supplies']]
y = df[['Cost']]

#Split
X_train,X_test,y_train,y_test = train_test_split(X,y)

#Pipeline
pipeline = Pipeline([('scale', RobustScaler()),
            ('alg', Lasso())])

clf = pipeline.fit(X_train,y_train)

train_score = clf.score(X_train,y_train)
test_score = clf.score(X_test,y_test)

print ("training score:", train_score)
print ("test score:", test_score)

#Predict example 
example = [[10,100]]
clf.predict(example)
...