Как добавить диапазон к предсказаниям линейной регрессии Sklearn

Случается, когда php-расширения не используются по умолчанию. В файле php.ini измените ;extension=php_mysql.dll на extension=php_mysql.dll. ** Если эта ошибка регистрируется, добавьте путь к этому файлу dll, например extension=C:\Php\php-???-nts-Win32-VC11-x86\ext\php_mysql.dll Сделайте то же самое для php_mysqli.dll и php_pdo_mysql.dll. Сохраните и запустите свой код еще раз.

0
задан Arman Didandeh 13 July 2018 в 13:41
поделиться

1 ответ

Некоторые алгоритмы не будут предлагать вне прогнозируемых значений диапазона, таких как sklearn.neighbors.KNeighborsRegressor или sklearn.ensemble.RandomForestRegressor.

Линейный регресс может выдавать значения целевого диапазона, вот пример:

from sklearn.ensemble import RandomForestRegressor
import numpy as np
from sklearn.linear_model import LinearRegression

y = np.linspace(0,1,100)
X = 2* y
X = X.reshape(-1,1)

>>>> rf.predict(np.array([[4.]])), lr.predict(np.array([[4.]]))
# (array([0.9979798]), array([2.]))

, но вы можете использовать трюк: вы можете сопоставить свое пространство [0, 1] с пространством [-inf, inf] и вернуться в исходное пространство после предсказания.

Вот пример использования сигмоида:

def sigmoid(x):
    return 1/(1+np.exp(-x))

def sigmoid_m1(x):
    return -np.log((1/x)-1)

rf = RandomForestRegressor()
lr = LinearRegression()
rf.fit(X,sigmoid_m1(y*0.9+0.05))
lr.fit(X,sigmoid_m1(y*0.9+0.05))
>>>> sigmoid(rf.predict(np.array([[4.]]))), sigmoid(lr.predict(np.array([[4.]])))
# (array([0.9457559]), array([0.99904361]))

Позаботьтесь об этом решении, потому что вы полностью меняете распределение данных, и это может создать множество проблем.

0
ответ дан Guissart Sebastien 17 August 2018 в 13:42
поделиться
  • 1
    Спасибо, Гиссарт. Тестирование других моделей было в отставании, но спасибо за то, что я был на правильном пути. Что касается отображения вывода, то причина, по которой вы упомянули, именно поэтому я колебался, чтобы отобразить вывод, и поэтому решил просто нормализовать его. Однако я считаю, что они оба оказывают такое же влияние на распределение. – Arman Didandeh 13 July 2018 в 13:27
Другие вопросы по тегам:

Похожие вопросы: