ist es möglich, PCA auf eine beliebige Textklassifizierung anzuwenden?
Ich versuche eine Klassifizierung mit Python. Ich verwende den Naive Bayes MultinomialNB-Klassifikator für die Webseiten (Abrufen von Daten aus Web zu Text, später klassifiziere ich diesen Text: Webklassifikation).
etzt versuche ich, PCA auf diese Daten anzuwenden, aber Python gibt einige Fehler au
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 gibt 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
Dann versuche ich, 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 folgende Fehler:
raise TypeError ('Eine dünne Matrix wurde übergeben, aber dicht' TypeError: Eine dünne Matrix wurde übergeben, aber dichte Daten sind erforderlich. Verwenden Sie X.toarray (), um in ein dichtes numpy-Array zu konvertieren.
Ich konvertiere Matrix in Densematrix oder Numpy-Array. Dann habe ich versucht, eine neue Densematrix zu klassifizieren, aber ich habe einen Fehler.
ein Hauptziel ist es, den PCA-Effekt auf die Klassifizierung von Texten zu teste
In dichtes Array konvertieren:
v_temizdatatodense = v_temizdata.todense()
pca_t = PCA().fit_transform(v_temizdatatodense)
Schließlich versuchen classfy:
classifer.fit(pca_t,y_train)
error für final classfy:
raise ValueError ("Eingang X darf nicht negativ sein") ValueError: Eingang X darf nicht negativ sein
uf einer Seite meine Daten temizdata
) wird nur in Naive Bayes abgelegt, auf der anderen Seitetemizdata
Zuerst PCA eingeben (um Eingaben zu reduzieren), dann klassifizieren. __