使用KerasRegressor构建多重回归模型后如何获取回归系数
提取KerasRegressor封装的Sequential回归模型系数操作步骤
默认你使用的是适配x1、x2两个自变量的线性回归结构(单输出全连接层,无额外隐藏层),操作流程如下:
前置参考(对应你原有模型的典型写法)
from keras.models import Sequential from keras.layers import Dense # 新版本Keras回归封装器位于scikeras库,老版本可使用keras.wrappers.scikit_learn下的KerasRegressor from scikeras.wrappers import KerasRegressor import numpy as np # 构建回归模型的函数 def build_reg_model(): model = Sequential() # 输入维度为2对应x1、x2,输出为1个预测值,无激活函数即线性回归 model.add(Dense(1, input_dim=2, activation='linear')) model.compile(loss='mean_squared_error', optimizer='adam') return model # 初始化并训练模型 kr_reg = KerasRegressor(model=build_reg_model, epochs=150, batch_size=8, verbose=0) # X_train维度为(样本数, 2),两列分别对应x1、x2 kr_reg.fit(X_train, y_train)
系数提取步骤
- 第一步:从KerasRegressor实例中取出训练完成的底层Sequential模型
# 新版scikeras封装的KerasRegressor使用model_属性 trained_seq_model = kr_reg.model_ # 老版本keras.wrappers下的KerasRegressor替换为下面的代码即可 # trained_seq_model = kr_reg.model
- 第二步:提取自变量系数和截距项
# get_weights()返回的列表第一个元素为权重矩阵,形状为(2,1),对应x1、x2的回归系数 coef_matrix = trained_seq_model.layers[0].get_weights()[0] x1_coef = coef_matrix[0][0] x2_coef = coef_matrix[1][0] # get_weights()返回的列表第二个元素为偏置向量,对应回归模型的截距项 intercept = trained_seq_model.layers[0].get_weights()[1][0]
如果你搭建的Sequential模型包含多个隐藏层,按层索引
layers[层序号]依次提取对应层的权重即可,每一层的get_weights()返回结果的结构均为[权重矩阵, 偏置向量]。
内容的提问来源于stack exchange,提问作者Shima Ataei
相关产品推荐
相关产品推荐

