Обратное преобразование с помощью FunctionTransformer из sklearn - PullRequest
0 голосов
/ 17 апреля 2020

Я хотел создать свой собственный Transformer, используя scikit-learn FunctionTransformer, и последовал их примеру как dry run. Это сработало, но потом я хотел взять обратное преобразование, чтобы увидеть конечный результат. Однако, когда я попробовал inverse_transform, он вернул то же самое, что и преобразование. Как мне получить исходные значения? Я спрашиваю об этом, потому что планирую использовать это преобразование для преобразования целевой переменной, а затем делать прогнозы. Эти предсказания должны быть обратно преобразованы после того, как я предсказал.

В качестве боковой полосы, должен ли я соответствовать y_train и трансформироваться в мой y_test? Или я могу преобразовать все сразу?

Мой трансформатор:

import numpy as np
from sklearn.preprocessing import FunctionTransformer
import random
randomlist = []
for i in range(0,100):
    n = random.randint(1,100)
    randomlist.append(n)
y = pd.Series(randomlist)
y_train = y[:80]
y_test = y[80:]
target_trans = FunctionTransformer(np.log, validate=True, check_inverse = True)
logy_train = target_trans.fit_transform(y_train.values.reshape(-1,1))
logy_test = target_trans.transform(y_test.values.reshape(-1,1))
target_trans.inverse_transform(y_train.values.reshape(-1,1))

1 Ответ

0 голосов
/ 17 апреля 2020

В пределах FunctionTransformer() вам нужно не только определить check_inverse=True, но и определить саму фактическую обратную функцию.

Так что для вышеупомянутого,

target_trans = FunctionTransformer(np.log, inverse_func = np.exp
                                   ,validate=True, check_inverse = True)

, который дает желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...