Форум сайта python.su
Возникает ошибка памяти в коде программы байесовского классификатора:
from sklearn.datasets import fetch_20newsgroups from pprint import pprint from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import ComplementNB from sklearn import metrics import numpy as np newsgroups_train = fetch_20newsgroups(subset = 'train', remove = ('headers', 'footers', 'quotes')) newsgroups_test = fetch_20newsgroups(subset = 'test') print("Число наблюдений в обучающей выборке\n", newsgroups_train.filenames.shape) print("Число наблюдений в тестовой выборке\n", newsgroups_test.filenames.shape) print("Список новостных рубрик\n") pprint(list(newsgroups_train.target_names)) # Приведение данных к document-term матрице vectorizer = CountVectorizer() sparse_train = vectorizer.fit_transform(newsgroups_train.data) sparse_test = vectorizer.transform(newsgroups_test.data) dense_train = sparse_train.toarray() dense_test = sparse_test.toarray() # Размерность данных (в dense и sparse совпадает) print("Размерность обучающей выборки\n", sparse_train.shape) print("Размерность тестовой выборки\n", sparse_test.shape) # Обучение модели и тестирование clf = ComplementNB(alpha=1) clf.fit(sparse_train, newsgroups_train.target) pred = clf.predict(sparse_test) # Точность классификации print("Точность классификации – доля верно классифицированных объектов из тестовой выборки \n") metrics.accuracy_score(newsgroups_test.target, pred, normalize=True) # Теперь для dense матрицы clf = ComplementNB(alpha=1) clf.fit(dense_train, newsgroups_train.target) pred = clf.predict(dense_test) # Точность классификации print("Точность классификации – доля верно классифицированных объектов из тестовой выборки \n") metrics.accuracy_score(newsgroups_test.target, pred, normalize=True)
MemoryError Traceback (most recent call last) <ipython-input-6-df2d53e43d0f> in <module> 24 sparse_test = vectorizer.transform(newsgroups_test.data) 25 ---> 26 dense_train = sparse_train.toarray() 27 dense_test = sparse_test.toarray() 28 C:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\compressed.py in toarray(self, order, out) 945 if out is None and order is None: 946 order = self._swap('cf')[0] --> 947 out = self._process_toarray_args(order, out) 948 if not (out.flags.c_contiguous or out.flags.f_contiguous): 949 raise ValueError('Output array must be C or F contiguous') C:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\base.py in _process_toarray_args(self, order, out) 1182 return out 1183 else: -> 1184 return np.zeros(self.shape, dtype=self.dtype, order=order) 1185 1186 MemoryError:
Офлайн