[英]How does pytorch compute the gradients for a simple linear regression model?
[英]How to compute AIC for linear regression model in Python?
我想为线性模型计算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
错误中divide by zero encountered in log
。
sklearn
的LinearRegression
非常适合预测,但是您已经发现了相当准系统。 (通常说sklearn远离所有统计推断。)
statsmodels.regression.linear_model.OLS
具有属性属性AIC
和许多其他预设的属性。
但是,请注意,您需要手动向X
矩阵添加单位向量,以在模型中包含截距。
from statsmodels.regression.linear_model import OLS
from statsmodels.tools import add_constant
regr = OLS(y, add_constant(X)).fit()
print(regr.aic)
来源是在这里 ,如果你正在寻找的同时仍然使用手工编写的另一种方式sklearn
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.