Я использую SciPy's boxcox function для выполнения Box-Cox transformation на непрерывной переменной.Обратное преобразование Box-Cox
from scipy.stats import boxcox
import numpy as np
y = np.random.random(100)
y_box, lambda_ = ss.boxcox(y + 1) # Add 1 to be able to transform 0 values
Затем я подгоняю статистическую модель для прогнозирования значений этой измененной переменной Box-Cox. Модельные предсказания находятся в шкале Box-Cox, и я хочу преобразовать их в исходный масштаб переменной.
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor()
X = np.random.random((100, 100))
rf.fit(X, y_box)
pred_box = rf.predict(X)
Однако я не могу найти функцию SciPy, которая выполняет обратное преобразование Бокса-Кокса данную преобразованные данные и лямбда. Есть ли такая функция? На данный момент я закодировал обратное преобразование.
pred_y = np.power((y_box * lambda_) + 1, 1/lambda_) - 1
Это кажется очень хороший вопрос. –
Обратная функция Box-Cox находится в версии scipy development (т. Е. Ведущей ветви на https://github.com/scipy/scipy) и будет доступна в версии 0.16. См. Https://github.com/scipy/scipy/pull/4211 –