我已经用 Python 训练了以下 glm 模型:
fitGlm = smf.glm( listOfInModelFeatures,
family=sm.families.Binomial(),data=train, freq_weights = train['model_weight']).fit()
然后我给出了训练模型的摘要:
print(fitGlm.summary())
报告内容如下:
Generalized Linear Model Regression Results
==============================================================================
Dep. Variable: Target No. Observations: 1065046
Model: GLM Df Residuals: 4361436.81
Model Family: Binomial Df Model: 8
Link Function: Logit Scale: 1.0000
Method: IRLS Log-Likelihood: -6.1870e+05
Date: Wed, 21 Aug 2024 Deviance: 1.2374e+06
Time: 10:27:37 Pearson chi2: 4.01e+06
No. Iterations: 8 Pseudo R-squ. (CS): 0.1479
Covariance Type: nonrobust
===============================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------
Intercept 3.2619 0.003 1126.728 0.000 3.256 3.268
e1_a_11_sp 0.9318 0.004 256.254 0.000 0.925 0.939
sp_g_37 0.5850 0.006 102.522 0.000 0.574 0.596
sp_f3_35 0.6510 0.005 135.114 0.000 0.642 0.660
e1_a_07_sp 0.4930 0.006 79.698 0.000 0.481 0.505
e1_e_02_sp 0.9956 0.008 120.253 0.000 0.979 1.012
e1_b_03_sp 0.7493 0.013 56.539 0.000 0.723 0.775
e2_k_02_spa 0.4996 0.014 34.512 0.000 0.471 0.528
ea5_s_01_sp 0.3305 0.008 41.524 0.000 0.315 0.346
===============================================================================
问题:如何获取每个特征的系数列表(包括截距)?我的意思是,我如何获得这样的东西?
[3.2619,0.9318,0.5850,0.6510,0.4930,0.9956,0.7493,0.4996,0.3305]
提前致谢。
要使用 statsmodels 从 Python 中训练的 GLM 模型中提取系数列表,可以使用拟合模型对象的 params 属性。这将为您提供一个 pandas.Series 对象,其中索引包含特征的名称(包括截距),值是相应的系数。
您可以按照以下方式操作:
说明:fitGlm.params:这将为您提供一个 pandas.Series,其中特征名称作为索引,相应的系数作为值。tolist():此方法将 pandas.Series 转换为 Python 列表,该列表仅为您提供数值系数。根据您的示例,此代码将生成列表:
该列表包括截距作为第一个值,后跟每个特征的系数,按照它们在模型中出现的顺序排列。
已分类!
我需要使用这样的东西: