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. __

Antworten auf die Frage(4)

Ihre Antwort auf die Frage