1
ich eine KD-Baum auf TFIDF eines Dokumentkorpus zu trainieren bin versucht, aber es gibtValueerror: ein Array-Element mit einer Sequenz Einstellung während des Trainings KD TREE auf TFIDF
ValueError: setting an array element with a sequence.
Der Code und die Fehler Beschreibung sind unten. Kann mir jemand helfen, das Problem zu lösen?
Code:
t0 = time.time()
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(X)
tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)
t1 = time.time()
total = t1-t0
print "TF-IDF built:", total
#######################------------------------############################
t0 = time.time()
#nbrs = NearestNeighbors(n_neighbors=20, algorithm='kd_tree', metric='euclidean')
#nbrs.fit(X_train_tfidf)#,Y)
nbrs = KDTree(np.array(X_train_tfidf), leaf_size=100)
t1 = time.time()
total = t1-t0
print "KNN Trained:", total
#######################------------------------############################
Dies ist der Fehler:
TF-IDF built: 0.108999967575
Traceback (most recent call last):
File ".\tfidf_knn.py", line 48, in <module>
nbrs = KDTree(np.array(X_train_tfidf), leaf_size=100)
File "sklearn/neighbors/binary_tree.pxi", line 1055, in sklearn.neighbors.kd_tree.BinaryTree.__init__ (sklearn\neighbo
rs\kd_tree.c:8298)
File "C:\Anaconda2\lib\site-packages\numpy\core\numeric.py", line 474, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence.
Danke für die Hilfe! Es funktionierte jedoch mit kleinen Daten, aber wenn es eine riesige Menge gibt - ich bekomme ein Gedächtnis zurück, weil ich nach "toarray()" - die Matrix nicht mehr spärlich ist. Gibt es eine Möglichkeit, KDTree eine dünn besetzte Matrix zu geben? – user3667569
Hey. Siehe meine Bearbeitung. Sie können kd_tree nicht mit Sparse-Eingabe verwenden, aber Sie können die Methode in Brute ändern. Die Ergebnisse sollten nicht viel anders sein. Außerdem müssen Sie Ihre Sparse-Matrix in ein anderes Formular (csr_matrix) konvertieren, das besser mit sklearn-Modellen kompatibel ist. – kazAnova