Я использую 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 строк.
Может кто-нибудь помочь мне решить эту проблему?Большое спасибо.