Я столкнулся с ошибкой памяти (возврат np.zeros ((self.shape, dtype = self.dtype, order = order) MemoryError) при выполнении программы на Python - PullRequest
0 голосов
/ 02 апреля 2019

Я читал некоторые текстовые файлы и разбивал все слова этих текстовых файлов и сохранял их в списке. Тогда я занимался кодированием. Когда размер текстовых файлов превышает 1 МБ, я столкнулся с проблемой MemoryError. Вот мой код

from numpy import array
import os
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
path="D://DATA//"
data=[]
for file in os.listdir(path):
    print(file)
    if file.endswith(".txt"):
        with open(os.path.join(path, file), 'r',encoding="utf8") as f:
            d1=f.read()
            data+=d1.split()
            print(data)
values = data
# integer encode
label_encoder = LabelEncoder()
integer_encoded = label_encoder.fit_transform(values)
onehot_encoder = OneHotEncoder(sparse=False)
integer_encoded = integer_encoded.reshape(len(integer_encoded), 1)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
print(onehot_encoded)

Это ошибка, которую я получаю

Traceback (most recent call last):
  File "C:/Users/Desktop/onehot.py", line 21, in <module>
    onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\preprocessing\_encoders.py", line 516, in fit_transform
    self._categorical_features, copy=True)
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\preprocessing\base.py", line 52, in _transform_selected
    return transform(X)
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\sklearn\preprocessing\_encoders.py", line 489, in _legacy_fit_transform
    return out if self.sparse else out.toarray()
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\sparse\compressed.py", line 962, in toarray
    out = self._process_toarray_args(order, out)
  File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\sparse\base.py", line 1187, in _process_toarray_args
    return np.zeros(self.shape, dtype=self.dtype, order=order)
MemoryError

Я использовал Python 64bit ... Я искал такого рода проблемы, и им сказали изменить gcv_mode. Я не знаю, как я могу использовать в этом случае. пожалуйста, помогите с этим. Заранее спасибо

1 Ответ

0 голосов
/ 02 апреля 2019

Похоже, вы играете с некоторыми текстовыми данными. Если вы используете одну горячую схему кодирования текстовых данных, и вам точно не хватит памяти, я бы посоветовал вам поиграть с

Sklean's TfidfVectorizer или CountVectorizer

Это: https://scikit -learn.org / stable / modules / generate / sklearn.feature_extraction.text.TfidfVectorizer.html

>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> corpus = [
...     'This is the first document.',
...     'This document is the second document.',
...     'And this is the third one.',
...     'Is this the first document?',
... ]
>>> vectorizer = TfidfVectorizer()
>>> X = vectorizer.fit_transform(corpus)
>>> print(vectorizer.get_feature_names())
['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
>>> print(X.shape)

Или вы можете играть с CountVectorizer : https://scikit -learn.org / стабильный / модули / генерироваться / sklearn.feature_extraction.text.CountVectorizer.html # sklearn.feature_extraction.text.CountVectorizer

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> corpus = [
...     'This is the first document.',
...     'This document is the second document.',
...     'And this is the third one.',
...     'Is this the first document?',
... ]
>>> vectorizer = CountVectorizer()
>>> X = vectorizer.fit_transform(corpus)
>>> print(vectorizer.get_feature_names())
['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
>>> print(X.toarray())  
[[0 1 1 1 0 0 1 0 1]
 [0 2 0 1 0 1 1 0 1]
 [1 0 0 1 1 0 1 1 1]
 [0 1 1 1 0 0 1 0 1]]
...