Python scikit学习:运行逻辑回归“拟合”,给出55000个训练样本和5000个特征的数据集的内存错误

Python scikit学习:运行逻辑回归“拟合”,给出55000个训练样本和5000个特征的数据集的内存错误,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我使用的数据集最初有4列,其中2列是数字列,2列是分类列。我对两个分类列使用了one hot编码,即pandasget_dummies函数。其中一列的基数较低,没有问题,但另一列有近5000个不同的值。为此,我在get_dummies函数中使用了sparse=True。该函数工作正常,然后我使用以下命令将数据拆分为培训和测试数据: X_train, X_test, y_train, y_test = train_test_split(df[fields],df['category_id'])

我使用的数据集最初有4列,其中2列是数字列,2列是分类列。我对两个分类列使用了
one hot
编码,即
pandas
get_dummies
函数。其中一列的基数较低,没有问题,但另一列有近5000个不同的值。为此,我在get_dummies函数中使用了
sparse=True
。该函数工作正常,然后我使用以下命令将数据拆分为培训和测试数据:

X_train, X_test, y_train, y_test = train_test_split(df[fields],df['category_id'])
这里,
df
是熊猫数据帧,
字段
是字段名列表,其中包括两个数字字段名和我从一个热编码中获得的新字段名

然后,我使用以下代码来训练模型:

import sklearn.linear_model as lm
classifier = lm.LogisticRegression()
classifier.fit(X_train, y_train)
但是,我遇到了以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/sklearn/linear_model/logistic.py", line 1142, in fit
    order="C")
  File "/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py", line 510, in check_X_y
    ensure_min_features, warn_on_dtype, estimator)
  File "/usr/local/lib/python2.7/dist-packages/sklearn/utils/validation.py", line 373, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
MemoryError
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist-packages/sklearn/linear_-model/logistic.py”,第1142行,适合
order=“C”)
文件“/usr/local/lib/python2.7/dist packages/sklearn/utils/validation.py”,第510行,检查
确保\u最小\u功能,警告\u数据类型,估计器)
文件“/usr/local/lib/python2.7/dist packages/sklearn/utils/validation.py”,第373行,在check_数组中
array=np.array(array,dtype=dtype,order=order,copy=copy)
记忆者

如何克服这一问题?对于相对较大的数据集,建议采用何种方式运行逻辑回归?

请查看。研究如何使用梯度下降方法,将数据集作为一个稀疏的scipy矩阵!我已经核实了答案,但不确定x_列(转换为稀疏矩阵)和y_列之间的关系是否会保持。fit函数执行时没有出现任何问题。我现在正在评估准确性