params,
                         args=(yhat, X, y),
                         method='trust-constr')

# print(mthd, optResult)
if optResult['success']:
    bestParams = optResult['x']
    print('\n最优参数:\n', bestParams)
else:
    print('训练失败!method可能不合适!')

# 4.评估模型
y_pred = yhat(bestParams, X)

# from common import displayRegressionMetrics
displayRegressionMetrics(y, y_pred)

# 5.最优算法选取method(假定你不知道的话)
methods = [
    'Nelder-Mead',
    'CG',
    'BFGS',
    'Newton-CG',
    'dogleg',
    'trust-ncg',
    'trust-crylov',
    'trust-exact',
    'COBYLA',
    'SLSQP',
    'trust-constr',  #有约束
    'Powell',
Beispiel #2
0
# print(sr)

sr.drop('Intercept', inplace=True)
cond = sr < 0.05
cols = sr[cond].index.tolist()
print('显著影响因子:', cols)

# 3)模型评估指标(拟合程度)
# 拟合程度(越接近于1表示模型越好)
print('R2={:.4}, adjR2={:.4}'.format(results.rsquared, results.rsquared_adj))

# 信息准则指标(带惩罚项,越小表示模型越好)
print('AIC={}, BIC={}'.format(results.aic, results.bic))  #信息准则指标

y_pred = results.fittedvalues
displayRegressionMetrics(y, y_pred)

# 4) 共线性检验:
# results.condition_number值过大,有可能存在共线性

# 5)残差检验
# results.resid     #残差 = y - y_pred

# 5、模型优化

# 6、应用模型
# 1)预测历史数据
y_pred = results.fittedvalues

# 2)预测新数据
XX = df.loc[10:11, :]
Beispiel #3
0
results = mdl.fit(smoothing_level=alpha, optimized=False)
print(results.summary())  #打印模型信息

print('模型参数:\n', results.params)  #返回参数字典

# 4.模型评估
# 1)查看评估指数
print('AIC=', results.aic)
print('AICC=', results.aicc)
print('BIC=', results.bic)
# print('SSE=', results.sse)
# resid = results.resid     # 残差resid = ts - y_pred
y_pred = results.fittedvalues  # 预测历史值
y_true = ts[y_pred.index]

displayRegressionMetrics(y_true, y_pred)

# 2)可视化图形:对比
plt.plot(range(len(y_pred)), y_pred, 'b', label='一次指数平滑')
plt.plot(range(len(y_true)), y_true, 'g', label='实际值')

plt.legend(loc='upper right')
title = 'Holt线性趋势(alpha={})'.format(alpha)
plt.title(title)
plt.show()

# 5.自行选取最优平滑系数
mdl = SimpleExpSmoothing(ts)
results = mdl.fit()  #默认optimized=True
print(results.summary())  #打印模型信息
Beispiel #4
0
print('最优超参:', grid.best_params_)
print('最优得分:', grid.best_score_)

bestParams = fixedParams
bestParams.update(grid.best_params_)

mdl = grid.best_estimator_  #保存最优模型
#奇怪:mdl.intercept_返回的是一个数组,而不是单个值
sr = pd.Series(data=mdl.intercept_.tolist() + mdl.coef_.tolist(),
               index=['常数'] + cols)
print(sr)

# 4、评估
# 1)训练集评估
y_pred = mdl.predict(X)
displayRegressionMetrics(y, y_pred, X.shape)

# 2)测试集评估
y_pred = mdl.predict(X_test)
displayRegressionMetrics(y_test, y_pred, X_test.shape)

# 6、应用模型
XX = [[10, 22]]
pred = mdl.predict(XX)
print(pred)

######################################################################
########  Part2、大规模数据集的随机梯度下降回归 示例
######################################################################
# 每次读取部分数据放入内存(而不是一次性)
# 递归训练模型