Sto provando una classificazione con python. Sto usando il classificatore MultinomialNB di Naive Bayes per le pagine web (Recupero del modulo di dati web in testo, classificherò successivamente questo testo: classificazione web).è possibile applicare PCA su qualsiasi classificazione di testo?
Ora, sto cercando di applicare PCA su questi dati, ma Python sta dando alcuni errori.
Il mio codice per la classificazione con la 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)
Questo Bayes classificazione ingenuo dà quella uscita:
>>> 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
Che cerco di applicare PCA sui miei dati (temizdata
):
>>> v_temizdata = vectorizer.fit_transform(temizdata)
>>> pca_t = PCA.fit_transform(v_temizdata)
>>> pca_t = PCA().fit_transform(v_temizdata)
ma questo aumento dopo gli errori:
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.
Converto matrice in matrice densematrix o numpy. Poi ho provato a classificare il nuovo densematrix, ma ho un errore.
Il mio obiettivo principale è quello di test dell'effetto PCA sulla classificazione del testo.
Converti fitta:
v_temizdatatodense = v_temizdata.todense()
pca_t = PCA().fit_transform(v_temizdatatodense)
Infine provare classfy:
classifer.fit(pca_t,y_train)
di errore per classfy finale:
raise ValueError("Input X must be non-negative") ValueError: Input X must be non-negative
Da una parte i miei dati (temizdata
) è messo in Solo Naive Bayes, dall'altra parte temizdata
messo in primo luogo in PCA (per rosso uce input) che classificare. __
Non vedo perché questo non dovrebbe funzionare.Come si converte in un array denso e quale errore ottieni allora? – kazemakase
Stai usando una vecchia versione di scikit-learn? Non penso che 'da sklearn import PCA' sia possibile nelle ultime versioni ... – kazemakase
@kazemakase Mi dispiace di aver sbagliato. Posso convertire in dense o numpy ma NaiveBayes non funziona con la nuova matrice densa. Ho aggiunto – zer03