Eu treinei da glm
seguinte forma:
fitGlm = smf.glm( listOfInModelFeatures,
family=sm.families.Binomial(),data=train, freq_weights = train['sampleWeight']).fit()
Os resultados parecem bons:
print(fitGlm.summary())
Generalized Linear Model Regression Results
==============================================================================
Dep. Variable: Target No. Observations: 1065046
Model: GLM Df Residuals: 4361437.81
Model Family: Binomial Df Model: 7
Link Function: Logit Scale: 1.0000
Method: IRLS Log-Likelihood: -6.0368e+05
Date: Sun, 25 Aug 2024 Deviance: 1.2074e+06
Time: 09:03:54 Pearson chi2: 4.12e+06
No. Iterations: 8 Pseudo R-squ. (CS): 0.1716
Covariance Type: nonrobust
===========================================================================================
coef std err z P>|z| [0.025 0.975]
-------------------------------------------------------------------------------------------
Intercept 3.2530 0.003 1074.036 0.000 3.247 3.259
feat1 0.6477 0.004 176.500 0.000 0.641 0.655
feat2 0.3939 0.006 71.224 0.000 0.383 0.405
feat3 0.1990 0.007 28.294 0.000 0.185 0.213
feat4 0.4932 0.009 54.614 0.000 0.476 0.511
feat5 0.4477 0.005 90.323 0.000 0.438 0.457
feat6 0.3031 0.005 57.572 0.000 0.293 0.313
feat7 0.3711 0.004 87.419 0.000 0.363 0.379
===========================================================================================
Tentei então exportar summary()
para .png
como sugerido aqui:
Python: Como salvar os resultados do statsmodels como arquivo de imagem?
Então, eu escrevi este código:
fig, ax = plt.subplots(figsize=(16, 8))
summary = []
fitGlm.summary(print_fn=lambda x: summary.append(x))
summary = '\n'.join(summary)
ax.text(0.01, 0.05, summary, fontfamily='monospace', fontsize=12)
ax.axis('off')
plt.tight_layout()
plt.savefig('output.png', dpi=300, bbox_inches='tight')
Mas eu recebo este erro:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[57], line 57
55 fig, ax = plt.subplots(figsize=(16, 8))
56 summary = []
---> 57 fitGlm.summary(print_fn=lambda x: summary.append(x))
58 summary = '\n'.join(summary)
59 ax.text(0.01, 0.05, summary, fontfamily='monospace', fontsize=12)
TypeError: GLMResults.summary() got an unexpected keyword argument 'print_fn'
Parece que print_fn
não é reconhecido pelos modelos de estatísticas?
Alguém pode me ajudar, por favor?
Configurei um teste para ver onde o print_fn pode ser usado. Também verifiquei a solução postada na última pergunta, mas não consegui encontrar print_fn na documentação.
Tentei converter para tabular para salvar o resumo em png:
Na minha opinião, é um caso muito incomum salvar dados em png. Impede que os usuários compartilhem informações. Existem opções para exportar o resumo para csv e látex. Se você estiver fazendo isso manualmente, sugiro exportar para csv e copiar e colar como imagem. Ou salve como txt e até mesmo captura de tela.
para referência:
ou