Почему я получаю ошибку памяти с помощью python statsmodels? - PullRequest
1 голос
/ 18 апреля 2019

Привет, я получаю ошибку памяти при запуске Tweedie GLM со statsmodels.Я посмотрел на Python statsmodels: ошибка памяти , но на этот пост ответа нет.

Компьютер, на котором я работаю, имеет 64 гигабайта оперативной памяти и восемь процессоров.Форма данных (722214, 47).

Ниже приведен мой код:

formula = 'pp_log ~ C(atfault_model) + C(channel_model) + C(CLded_model) + C(credit_model_52778) + \
        C(credit_model_c6) + C(package_model) + C(ds_fp_paid_in_full) + C(ds_pn_prior_insurance) + \
        C(ds_ip_advanced_purchase) + C(credit_model_c5) + C(ds_ad_affinity) + C(ds_ak_alliance) + \
        C(ds_ly_loyalty_discount) + C(ds_mo_multipolicy) + C(ds_pf_performance) + C(majorvio_model) + \
        C(driver_age_model):C(marital_status_model) + C(minorvio_model) + C(multi_unit_model) + \
        C(unit_drv_exp_model) +  C(Vintiles) + C(safety_course_model) + C(instructor_course_model) + \
        C(RATING_CLASS_CODE_MODEL) + C(class_model):C(v_age_model) + C(class_model):C(cc_model)'

y, x = patsy.dmatrices(formula, train, return_type = 'dataframe')

weights = train['coll_eu']

lost_cost_model = smf.GLM(y, x-1, family = sm.families.Tweedie(link = sm.families.links.log, var_power = 1.5), weights = weights)

lost_cost_results = lost_cost_model.fit()

Дополнительная информация:

Ошибка памяти выдается в следующей строке:

lost_cost_results = lost_cost_model.fit()

ниже приведена трассировка:

MemoryError Traceback (последний последний вызов) в ----> 1 lost_cost_results = lost_cost_model.fit ()

C: \ ProgramData \ Anaconda3 \ lib\ site-packages \ statsmodels \ genmod \ generalized_linear_model.py вписывается (self, start_params, maxiter, метод, tol, scale, cov_type, cov_kwds, use_t, full_output, disp, max_start_irls, ** kwargs) 1010 возвращает self._fit_irls (start_params)= start_params, maxiter = maxiter,
1011 tol = tol, scale = scale, cov_type = cov_type, -> 1012 cov_kwds = cov_kwds, use_t = use_t, ** kwargs) 1013 остальное: 1014
self._optim_hessian = kwargs.get ('optim_hessian')

C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ statsmodels \ genmod \ generalized_linear_model.py в _fit_irls (self, start_params, maxiter, tol, scale, cov_type, cov_kwds,use_t, ** kwargs) 1131 wlsendog,
1132 wlsexog, -> 1133 self.weights) .fit (method = wls_method) 1134 lin_pred = np.dot (self.exog, wls_results.params)
1135 lin_pred + = self._offset_exposure

C: \ProgramData \ Anaconda3 \ lib \ site-packages \ statsmodels \ regression_tools.py в init (self, endog, exog, weight) 47 self.wexog = w_half * exog 48 else: ---> 49 self.wexog = w_half [:, None] * exog 50 51 def fit (self, method = 'pinv'):

MemoryError:

Добавить 2:

В страховой отрасли это стандартная практика - все перечислять как категориальную переменную.Затем, как только будет принято решение о том, как сгладить каждую относительность, измените то, что необходимо изменить, на числовой тип и поместите полином или сплайн или что-нибудь еще ...

Как только я использовал, какие переменные я могкак числовой, он работал нормально ... всего за 3 минуты.Дело закрыто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...