我想为线性模型计算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
错误。
答案 0 :(得分:8)
sklearn
LinearRegression
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
如果您正在寻找另一种在使用ui->tableView_visitRep->model()->rowCount()
时手动编写的方式,则来源为here。