Я выполняю логистическую регрессию, используя pandas 0.11.0
(обработка данных) и statsmodels 0.4.3
для фактической регрессии на Mac OSX Lion.
Я собираюсь запустить ~ 2900 различных моделей логистической регрессии, и мне нужно вывести результаты в файл csv и отформатировать определенным образом.
В настоящее время я знаю только выполнение print result.summary()
, которое выводит результаты (как показано ниже) в оболочку:
Logit Regression Results
==============================================================================
Dep. Variable: death_death No. Observations: 9752
Model: Logit Df Residuals: 9747
Method: MLE Df Model: 4
Date: Wed, 22 May 2013 Pseudo R-squ.: -0.02672
Time: 22:15:05 Log-Likelihood: -5806.9
converged: True LL-Null: -5655.8
LLR p-value: 1.000
===============================================================================
coef std err z P>|z| [95.0% Conf. Int.]
-------------------------------------------------------------------------------
age_age5064 -0.1999 0.055 -3.619 0.000 -0.308 -0.092
age_age6574 -0.2553 0.053 -4.847 0.000 -0.359 -0.152
sex_female -0.2515 0.044 -5.765 0.000 -0.337 -0.166
stage_early -0.1838 0.041 -4.528 0.000 -0.263 -0.104
access -0.0102 0.001 -16.381 0.000 -0.011 -0.009
===============================================================================
Мне также понадобится отношение шансов, которое вычисляется print np.exp(result.params)
и печатается в оболочке как таковое:
age_age5064 0.818842
age_age6574 0.774648
sex_female 0.777667
stage_early 0.832098
access 0.989859
dtype: float64
Мне нужно, чтобы каждый из них был записан в файл csv в виде очень длинной строки, например (на данный момент я не уверен, понадобятся ли мне такие вещи, как Log-Likelihood
, но я включил их для полноты):
`Log-Likelihood, age_age5064_coef, age_age5064_std_err, age_age5064_z, age_age5064_p>|z|,...age_age6574_coef, age_age6574_std_err, ......access_coef, access_std_err, ....age_age5064_odds_ratio, age_age6574_odds_ratio, ...sex_female_odds_ratio,.....access_odds_ratio`
Я думаю, вы поняли картину — очень длинная строка со всеми этими фактическими значениями и заголовок со всеми обозначениями столбцов в аналогичном формате.
Я знаком с csv module
в Python и все больше знаком с pandas
. Не уверен, что эта информация может быть отформатирована и сохранена в pandas dataframe
, а затем записана с использованием to_csv
в файл после завершения всех ~2900 моделей логистической регрессии; это конечно было бы хорошо. Также можно записывать их по мере завершения каждой модели (используя csv module
).
ОБНОВИТЬ:
Итак, я больше смотрел на сайт statsmodels, в частности, пытаясь выяснить, как результаты модели хранятся в классах. Похоже, есть класс под названием «Результаты», который нужно будет использовать. Я думаю, что использование наследования от этого класса для создания другого класса, в котором изменяются некоторые методы/операторы, может быть подходящим способом, чтобы получить требуемое форматирование. У меня очень мало опыта в том, как это сделать, и мне нужно будет потратить немало времени, чтобы понять это (и это нормально). Если кто-то может помочь / имеет больше опыта, это было бы здорово!
Вот сайт, на котором выложены классы: класс результатов statsmodels