Statsmodels公司Logit.fit_正则化一直在跑

2024-06-09 06:10:31 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我一直在尝试在矢量化文本数据上拟合正则化Logistic回归。我第一次尝试使用sklearn,没有问题,但是后来我发现我无法通过sklearn进行推理,所以我尝试切换到statsmodels。问题是,当我尝试安装logit时,它会一直运行,并使用我95%的RAM(在8GB和16GB的RAM计算机上都试过)。在

我的第一个猜测是与维度有关,因为我使用的是2960 x 43k矩阵。所以,为了减少这个问题,我删除了二元图,只取了100个观察值的样本,这给我留下了一个100×6984的矩阵,我认为这应该不会有太大的问题。在

以下是我的代码示例:

for train_index, test_index in sss.split(df_modelo.Cuerpo, df_modelo.Dummy_genero):

   X_train, X_test = df_modelo.Cuerpo[train_index], df_modelo.Cuerpo[test_index]
   y_train, y_test = df_modelo.Dummy_genero[train_index], df_modelo.Dummy_genero[test_index]


cvectorizer=CountVectorizer(max_df=0.97, min_df=3, ngram_range=(1,1) )
vec=cvectorizer.fit(X_train)
X_train_vectorized = vec.transform(X_train)

这给了我一个列车和一个测试集,然后将X峈train的文本矢量化。 然后我试着:

^{pr2}$

result行之前,一切都很好,它将永远运行。我能做点什么吗?如果我在寻找统计推断,我应该切换到R吗?在

提前谢谢!在


Tags: test文本dfindextrain矩阵sklearn矢量化
1条回答
网友
1楼 · 发布于 2024-06-09 06:10:31

几乎所有的stats模型和所有的推理都是针对观测数远远大于特征数的情况而设计的。在

Logit.fit_regularized使用带有scipy优化器的内部点算法,该算法需要将所有特性保存在内存中。参数的推断需要具有形状n_特征的参数估计的协方差。它设计的用例是当特征的数量相对于观察的数量相对较少时,并且Hessian可以用于内存中。在

GLM.fit_regularized估计弹性网络惩罚参数并使用坐标下降。这可能处理大量的特征,但没有任何可用的推断结果。在

在套索和类似的惩罚措施之后,关于选择变量的推论只有在最近的研究中才可用。请参阅Pythonhttps://github.com/selective-inference/Python-software中的选择推理示例,其中还提供了R包。在

相关问题 更多 >