Ich versuche eine Klassifizierung mit Python. Ich benutze Naive Bayes MultinomialNB Klassifizierer für die Webseiten (Abrufen von Daten von Web zu Text, später klassifiziere ich diesen Text: Web-Klassifizierung).ist es möglich, PCA auf jede Textklassifikation anzuwenden?
Jetzt versuche ich, PCA auf diese Daten anzuwenden, aber Python gibt einige Fehler.
Mein Code für die Klassifizierung mit Naive Bayes:
from sklearn import PCA
from sklearn import RandomizedPCA
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
vectorizer = CountVectorizer()
classifer = MultinomialNB(alpha=.01)
x_train = vectorizer.fit_transform(temizdata)
classifer.fit(x_train, y_train)
Diese naive Bayes-Klassifizierung ergibt, dass die Ausgabe:
>>> x_train
<43x4429 sparse matrix of type '<class 'numpy.int64'>'
with 6302 stored elements in Compressed Sparse Row format>
>>> print(x_train)
(0, 2966) 1
(0, 1974) 1
(0, 3296) 1
..
..
(42, 1629) 1
(42, 2833) 1
(42, 876) 1
als ich versuche, PCA auf meine Daten anzuwenden (temizdata
):
>>> v_temizdata = vectorizer.fit_transform(temizdata)
>>> pca_t = PCA.fit_transform(v_temizdata)
>>> pca_t = PCA().fit_transform(v_temizdata)
, aber diese Erhöhung folgenden Fehler:
raise TypeError('A sparse matrix was passed, but dense ' TypeError: A sparse matrix was passed, but dense data is required. Use X.toarray() to convert to a dense numpy array.
Ich konvertiere Matrix in dichter Matrix oder numpy Array. Dann habe ich versucht neue dichte Matrix zu klassifizieren, aber ich habe Fehler.
Mein Hauptziel ist, dass Test PCA-Effekt auf Klassifizierung auf Text.
zu dichten Array konvertieren:
v_temizdatatodense = v_temizdata.todense()
pca_t = PCA().fit_transform(v_temizdatatodense)
Schließlich versuchen classfy:
classifer.fit(pca_t,y_train)
Fehler für die endgültige classfy:
raise ValueError("Input X must be non-negative") ValueError: Input X must be non-negative
Auf der einen Seite meine Daten (temizdata
) in gesetzt wird Naive Bayes nur, auf der anderen Seite temizdata
zuerst in PCA (für rot Inputs) als klassifizieren. __
Ich sehe nicht, warum das nicht funktionieren sollte.Wie konvertierst du in ein dichtes Array und welchen Fehler bekommst du dann? – kazemakase
Verwenden Sie eine alte Version von scikit-learn? Ich glaube nicht, dass 'slearn Import-PCA' in den letzten Versionen möglich ist ... – kazemakase
@kazemakase Es tut mir leid, ich schreibe falsch. Ich kann in dichte oder numpige konvertieren, aber NaiveBayes nicht mit neuen dichten Matrix arbeiten. Ich habe hinzugefügt – zer03