Keras逻辑回归权重:剂量与疾病结局OR值及Fisher检验对比
用Keras实现逻辑回归并计算优势比(OR)
我最近在做一项分析任务:用Keras搭建逻辑回归模型,建立剂量值(数据形状为(672,1))和二分类疾病结局(数据形状为(672,1),结局取值为0或1)之间的关联。我的核心目标是计算模型权重对应的优势比(Odds Ratio, OR)——也就是权重的指数结果exp(weights),之后还要把这个OR和Fisher检验得到的结果做对比。
我目前写的代码框架如下:
from keras.models import Sequential from keras.layers import Dense, Activation from keras import layers import numpy as np class logit: def lg_keras(self, input_dim, output_dim, ep, X, y): # 构建逻辑回归模型 model = Sequential() # 逻辑回归本质是单输出的全连接层+Sigmoid激活 model.add(Dense(output_dim, input_dim=input_dim, activation='sigmoid')) # 编译模型:二元交叉熵损失+适配的优化器 model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(X, y, epochs=ep, batch_size=32, verbose=0) # 提取模型权重并计算优势比 # 权重矩阵形状为(input_dim, output_dim),这里input_dim=1,所以取第一个元素 weight_value = model.get_weights()[0][0][0] odds_ratio = np.exp(weight_value) return odds_ratio, model
(注:上面补充了完整的模型构建、训练和OR计算逻辑,你可以根据实际需求调整优化器、训练批次、迭代次数等参数;后续可以用scipy.stats.fisher_exact计算Fisher检验的OR值,再和模型输出的OR做对比)
内容的提问来源于stack exchange,提问作者Rohit Farmer
相关产品推荐
相关产品推荐

