[PYTHON] Textfilterung mit naiven Buchten von sklearn

from sklearn.datasets import fetch_20newsgroups Verwenden wir den Datensatz von.

Code zur Ausgabekategorie

from pprint import pprint
pprint(list(newsgroups_train.target_names))

Dies scheint eine Artikelkategorie zu sein, aber am Anfang war unklar, was geschrieben wurde.

['alt.atheism',
 'comp.graphics',
 'comp.os.ms-windows.misc',
 'comp.sys.ibm.pc.hardware',
 'comp.sys.mac.hardware',
 'comp.windows.x',
 'misc.forsale',
 'rec.autos',
 'rec.motorcycles',
 'rec.sport.baseball',
 'rec.sport.hockey',
 'sci.crypt',
 'sci.electronics',
 'sci.med',
 'sci.space',
 'soc.religion.christian',
 'talk.politics.guns',
 'talk.politics.mideast',
 'talk.politics.misc',
 'talk.religion.misc']

Als ich es untersuchte, stellte sich heraus, dass es sich um ein Netznachrichtenprotokoll handelte.

Lesung der Nachrichtengruppe fj.comp.applications.excel, fj.comp.oldies, fj.comp.misc, fj.os.ms-windows.win95, fj.os.msdos, fj.net.providers, fj.net.words, fj.life.hometown.hokkaido, fj.jokes.d, fj.rec.autos, fj.rec.motorcycles, fj.news.group.*, fj.news.policy, fj.news.misc, fj.news.adm, fj.news.net-abuse, fj.questions.fj, fj.questions.internet, fj.questions, misc, fj.sci.chem, fj.engr.misc http://www2s.biglobe.ne.jp/~kyashiki/fj/arukikata/WonderfulFj.html

Das Network News Transfer Protocol war eine Nachricht, die fj (News Group) verwendete.

sample.py


import numpy as np
from sklearn.datasets import fetch_20newsgroups
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
import nltk
from pprint import pprint

def stopwords():
    symbols = ["'", '"', '`', '.', ',', '-', '!', '?', ':', ';', '(', ')', '*', '--', '\\']
    stopwords = nltk.corpus.stopwords.words('english')
    return stopwords + symbols

newsgroups_train = fetch_20newsgroups(subset='train', remove=('headers', 'footers', 'quotes'))
newsgroups_test  = fetch_20newsgroups(subset='test', remove=('headers', 'footers', 'quotes'))

#Nachrichtenkategorie anzeigen
pprint(list(newsgroups_train.target_names))
#Artikeldaten
#print(newsgroups_train.data)

#Erstellen Sie die CountVectorizer-Klasse
vectorizer = CountVectorizer(stop_words=stopwords())
#print(vectorizer)
#Erstellen Sie ein Vokabular
vectorizer.fit(newsgroups_train.data)

# Train
#Ersetzen Sie X durch die Dokumenttermmatrix
X = vectorizer.transform(newsgroups_train.data)
# print(newsgroups_train.target)
y = newsgroups_train.target
# print(X.shape)

clf = MultinomialNB()
clf.fit(X, y)
print(clf.score(X,y))

# Test
X_test = vectorizer.transform(newsgroups_test.data) 
y_test = newsgroups_test.target

print(clf.score(X_test, y_test))

スクリーンショット 2016-06-24 23.23.53.png

Daten: Richtige Antwortrate 60% Testdaten: Richtige Antwortrate 80%

Es scheint, dass.

Ich habe es als Referenz verwendet. Es war sehr hilfreich. http://qiita.com/kotaroito/items/76a505a88390c5593eba

Recommended Posts

Textfilterung mit naiven Buchten von sklearn
Fordern Sie die Textklassifizierung von Naive Bayes mit sklearn heraus
Implementieren Sie Naive Bayes in Python 3.3
GOTO in Python mit erhabenem Text 3
Einführung in nichtparametrische Felder
Deep Kernel Learning mit Pyro
[Python] Bayesianische Schätzung mit Pyro
[Python] Gemischtes Gaußsches Modell mit Pyro
Textfilterung mit naiven Buchten von sklearn
Lesen von Zeichen in Bildern mit Python OCR
Ich habe versucht, Tundele mit Naive Bays zu beurteilen
Clustertext in Python
Textverarbeitung mit Python
Naive Buchten (Mehrklassenklassifikation)
Text Mining mit Python-Scraping-
Pythonbrew mit erhabenem Text
Co-Filterung mit PySpark
Ablauf des Extrahierens von Text in PDF mit der Cloud Vision API