Линейная регрессия без наименьших квадратов в склеарне - PullRequest
0 голосов
/ 13 декабря 2018

Я работаю с модулем LinearRegression из sklearn.linear_model и хочу вычислить параметры моей модели линейной регрессии без использования наименьших квадратов .

Например, я хотел бы оценить эти параметры путем минимизации значений одного из показателей регрессии, определенных в модуле sklearn.metrics (например, mean_squared_log_error).

Есть ли модуль, который позволит мне легко это сделать?

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете написать свою собственную функцию стоимости и минимизировать вызов.Помните, что нет никаких ограничений на minimize, поэтому вы можете добавить некоторые из них к тому, что я здесь показываю:

import numpy as np
from sklearn.metrics import mean_squared_log_error
from scipy.optimize import minimize

a = np.array([1, 2, 3])
b = np.array([100, 200, 300])

Итак, вот модель, которую я хочу изучить (т.е.регрессор):

def fun(x):
    return a*x

Теперь вот моя функция стоимости:

def cost(x):
    return mean_squared_log_error(b, fun(x))

И теперь я могу оптимизировать ее:

print(minimize(cost, x0=[1]))

Знайте, что я нездесь нет градиента, поэтому он может быть медленным (или использовать числовые различия IIRC с некоторыми оптимизаторами).

...