我想计算线性模型的AIC来比较它们的复杂性。我做的如下:
regr = linear_model.LinearRegression()
regr.fit(X, y)
aic_intercept_slope = aic(y, regr.coef_[0] * X.as_matrix() + regr.intercept_, k=1)
def aic(y, y_pred, k):
resid = y - y_pred.ravel()
sse = sum(resid ** 2)
AIC = 2*k - 2*np.log(sse)
return AIC
但我收到一个divide by zero encountered in log
错误。
sklearn
的LinearRegression
有助于预测,但正如您所发现的那样,这是非常简单的。(人们常说sklearn远离所有的统计推断。)statsmodels.regression.linear_model.OLS
有一个属性属性AIC
和许多其他预先设置好的属性。但是,请注意,您需要手动向
X
矩阵添加一个单位向量,以便在模型中包含一个截距。如果您正在寻找在使用
sklearn
时手动编写的替代方法,则源代码为here。相关问题 更多 >
编程相关推荐