MemoryError При использовании TF-IDF toarray - PullRequest
0 голосов
/ 08 декабря 2018

Я использую TfidfVectorizer для векторизации моих данных. Вот мой код:

# read from txt file per line and split with whitespace
corpus = []
for line in open(address, 'r').readlines():
    corpus.append(line.strip())

# TF-IDF
tfidf_vec = TfidfVectorizer()
tfidf_matrix = tfidf_vec.fit_transform(corpus)
X = tfidf_matrix.toarray()

# generate the linkage matrix
Z = linkage(X, 'average')

# set cut-off to 1
max_d = 1  # max_d as in max_distance

fancy_dendrogram(
    Z,
    truncate_mode='lastp',
    p=50,
    leaf_rotation=90,
    leaf_font_size=10,
    show_contracted=True,
    annotate_above=1,  # useful in small plots so annotations don't overlap
    max_d = max_d,
)
plt.show()

Но я получил это:

Traceback (большинствопоследний вызов последним): Файл "C: /Users/Wesley/PycharmProjects/ProblemDetectyion/demo/data_process.py", строка 108, в файле tf_idf (source_file_addr) в файле "C: / Users / Wesley / PycharmProjects / ProblemDetectyion /cessmo / data / ProblemDetectyion / demo.py ", строка 80, в файле tf_idf Z = linkage (X, 'Average') Файл" C: \ Users \ Wesley \ PycharmProjects \ ProblemDetectyion \ venv \ lib \ site-packages \ scipy \ cluster \ierarchy.py ", строка 708, в связи y = distance.pdist (y, метрика) Файл "C: \ Users \ Wesley \ PycharmProjects \ ProblemDetectyion \ venv \ lib \ site-packages \ scipy \ пространственный \ distance.py", строка 1877, в pdist dm =np.empty ((m * (m - 1)) // 2, dtype = np.double) MemoryError

Если я удаляю toarray (), я получаю это:

Traceback (последний вызов был последним): файл "C: /Users/Wesley/PycharmProjects/ProblemDetectyion/demo/data_process.py", строка 107, в файле tf_idf (source_file_addr) "C: / Users / Wesley / PycharmProjects / ProblemDetectyion / demo / data_process.py ", строка 79, в tf_idf Z = linkage (X, 'middle') Файл" C: \ Users \ Wesley \ PycharmProjects \ ProblemDetectyion \ venv \ lib \ site-packages \ scipy\ cluster \ierarchy.py ", строка 694, в связке y = _convert_to_double (np.asarray (y, order = 'c')) Файл" C: \ Users \ Wesley \ PycharmProjects \ ProblemDetectyion \ venv \ lib \ site-packages\ scipy \ cluster \ierarchy.py ", строка 1216, в _convert_to_double X = X.astype (np.double) ValueError: установка элемента массива с последовательностью.

Я пытаюсь использовать :

HashingVectorizer(n_features=200, norm=None)

Я получил ошибку:

ValueError: setting an array element with a sequence.

Я получил только 8 ГБ ОЗУ, и мой текстовый файл содержит 100000 строк.

Может кто-нибудь помочь мне решить эту проблему?Большое спасибо.

...