Python 3.x 为什么python statsmodels会出现内存错误?

Python 3.x 为什么python statsmodels会出现内存错误?,python-3.x,error-handling,statsmodels,Python 3.x,Error Handling,Statsmodels,嗨,我在用statsmodels运行Tweedie GLM时遇到内存错误。我已经看过了,但那篇帖子上没有答案 我运行这台计算机有64G的RAM和8个处理器。数据的形状是(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

嗨,我在用statsmodels运行Tweedie GLM时遇到内存错误。我已经看过了,但那篇帖子上没有答案

我运行这台计算机有64G的RAM和8个处理器。数据的形状是
(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回溯(最近的调用) 最后)在 ---->1损失成本结果=损失成本模型。拟合()

C:\ProgramData\Anaconda3\lib\site packages\statsmodels\genmod\generalized\u linear\u model.py 拟合(自身、启动参数、最大值、方法、tol、刻度、cov类型、, cov\u kwds、use\u t、全输出、显示、最大启动\u irls、**kwargs)1010 返回self.\u fit\u irls(开始参数=开始参数,最大值=最大值,
1011 tol=tol,刻度=刻度, cov_类型=cov_类型, ->1012 cov_kwds=cov_kwds,use_t=use_t,**kwargs)1013其他:1014
self.\u optim\u hessian=kwargs.get('optim\u hessian'))

C:\ProgramData\Anaconda3\lib\site packages\statsmodels\genmod\generalized\u linear\u model.py 内部配合irls(自、启动参数、最大值、tol、刻度、cov类型、, cov_kwds,使用,**kwargs)1131 wlsendog,
1132 wlsexog, ->1133自我权重)。拟合(方法=wls\U方法)1134 lin\U pred=np.dot(自我exog,wls\U结果.params)
1135 lin_pred+=自偏移曝光

C:\ProgramData\Anaconda3\lib\site packages\statsmodels\regression\u tools.py 在初始中(自身、endog、exog、权重) 47 self.wexog=w_half*exog 48.其他: --->49 self.wexog=w_half[:,None]*exog 50 51 def配合(自身,方法='pinv'):

记忆错误:

添加2:

在保险行业,标准做法是将所有内容作为分类变量引入。然后,一旦决定了如何平滑每个相对性,将需要改变的内容转换为数值类型,并拟合多项式、样条曲线或任何东西


一旦我使用了我能用的变量作为数值,它就运行得很好了……只需3分钟。案件结案

使用
try except
&首先识别导致错误的语句。