我正在使用 sklearn.linear_model 中的 LinearRegression 模块,并且我希望在不使用最小二乘的情况下计算线性回归模型的参数 。
例如,我想通过最小化模块 sklearn.metrics 中定义的回归指标之一的值(例如,mean_squared_log_error)来估计此参数。
有没有一个模块可以让我轻松地做到这一点?
答案 0 :(得分:3)
您可以编写自己的成本函数并最小化调用。请注意,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)。