Heim  >  Artikel  >  Backend-Entwicklung  >  Naive Bayes-Beispiele in Python

Naive Bayes-Beispiele in Python

王林
王林Original
2023-06-09 23:36:06960Durchsuche

Python ist eine einfache und leicht zu erlernende Programmiersprache mit umfangreichen wissenschaftlichen Computerbibliotheken und Datenverarbeitungstools. Unter ihnen ist der Naive-Bayes-Algorithmus als klassische Methode des maschinellen Lernens auch in der Python-Sprache weit verbreitet. In diesem Artikel werden Beispiele verwendet, um die Verwendung und Schritte von Naive Bayes in Python vorzustellen.

  1. Einführung in Naive Bayes

Der Naive Bayes-Algorithmus ist ein Klassifizierungsalgorithmus, der auf dem Bayes-Theorem basiert. Seine Kernidee besteht darin, die Klassifizierungsergebnisse neuer Daten anhand der Eigenschaften des bekannten Trainingsdatensatzes abzuleiten. In praktischen Anwendungen wird der Naive-Bayes-Algorithmus häufig in Szenarien wie Textklassifizierung, Spam-Filterung und Stimmungsanalyse verwendet.

Das Merkmal des Naive-Bayes-Algorithmus ist, dass er davon ausgeht, dass jedes Merkmal unabhängig voneinander ist. Diese Annahme trifft in tatsächlichen Situationen oft nicht zu, daher wird der Naive-Bayes-Algorithmus als „naiv“ bezeichnet. Trotz dieser Annahme schneidet Naive Bayes bei Problemen wie der Kurztextklassifizierung immer noch gut ab.

  1. Verwendung des Naive-Bayes-Klassifikators

In Python können die Schritte zur Verwendung des Naive-Bayes-Klassifikators wie folgt zusammengefasst werden:

2.1 Daten vorbereiten

Zuerst müssen Sie die Trainingsdaten vorbereiten und die zu klassifizierenden Daten testen. Diese Daten können in Form von Text, Bildern, Audio usw. vorliegen, müssen jedoch in eine für den Computer verständliche Form umgewandelt werden. Bei Textklassifizierungsproblemen ist es häufig erforderlich, Text in eine Vektordarstellung umzuwandeln.

2.2 Trainingsmodell

Als nächstes müssen Sie den Trainingsdatensatz verwenden, um den Naive Bayes-Klassifikator zu erstellen. In Python gibt es drei häufig verwendete naive Bayes-Klassifikatoren:

  • GaussianNB: geeignet für die Klassifizierung kontinuierlicher Daten.
  • BernoulliNB: Geeignet zur Klassifizierung binärer Daten.
  • MultinomialNB: Geeignet für die Klassifizierung multivariater Daten.

Am Beispiel der Textklassifizierung können Sie die von der sklearn-Bibliothek bereitgestellte TfidfVectorizer-Klasse verwenden, um den Text in eine Vektordarstellung umzuwandeln, und den MultinomialNB-Klassifikator für das Training verwenden.

2.3 Testen des Modells

Nach Abschluss des Trainings muss der Testdatensatz verwendet werden, um die Leistung des Modells zu bewerten. Normalerweise sind der Testdatensatz und der Trainingsdatensatz unabhängig. Es ist zu beachten, dass Daten aus dem Trainingsdatensatz während des Tests nicht verwendet werden können. Sie können die von der Sklearn-Bibliothek bereitgestellte Funktion precision_score verwenden, um die Genauigkeit des Modells zu berechnen.

  1. Beispiel: Textklassifizierung basierend auf Naive Bayes

Um die praktische Anwendung des Naive Bayes-Klassifikators zu demonstrieren, wird in diesem Artikel eine Textklassifizierung basierend auf Naive Bayes als Beispiel herangezogen.

3.1 Daten vorbereiten

Suchen Sie zunächst zwei Textdatensätze aus dem Internet, nämlich „Sportnachrichten“ und „Technologienachrichten“. Jeder Datensatz enthält 1000 Texte. Legen Sie die beiden Datensätze in verschiedene Ordner und kennzeichnen Sie die Texte als „Sport“ bzw. „Technologie“.

3.2 Verwenden Sie die Sklearn-Bibliothek zur Klassifizierung.

Als nächstes verwenden Sie zur Klassifizierung den von der Sklearn-Bibliothek bereitgestellten naiven Bayes-Klassifikator.

(1) Verwandte Bibliotheken importieren

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
import os

(2) Textdaten und ihre Anmerkungen lesen

def read_files(path):
    text_list = []
    label_list = []
    for root, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(root, file)
            with open(file_path, 'r', encoding='utf-8') as f:
                text = ''.join(f.readlines())
                text_list.append(text)
                if '体育' in file_path:
                    label_list.append('体育')
                elif '科技' in file_path:
                    label_list.append('科技')
    return text_list, label_list

(3) Text in Vektordarstellung konvertieren

def text_vectorizer(text_list):
    vectorizer = TfidfVectorizer()
    X = vectorizer.fit_transform(text_list)
    return X, vectorizer

(4) Modell trainieren und Genauigkeit zurückgeben

def train(text_list, label_list):
    X, vectorizer = text_vectorizer(text_list)
    y = label_list
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    clf = MultinomialNB()
    clf.fit(X_train, y_train)
    y_pred = clf.predict(X_test)
    acc = accuracy_score(y_test, y_pred)
    return clf, vectorizer, acc

(5) Testen Modell

def predict(clf, vectorizer, text):
    X = vectorizer.transform(text)
    y_pred = clf.predict(X)
    return y_pred[0]

3.3 Ergebnisanalyse

Durch Ausführen des obigen Codes können Sie eine Genauigkeit des Klassifikators von 0,955 erhalten. Bei der eigentlichen Klassifizierung müssen Sie lediglich den zu klassifizierenden Text in die Vorhersagefunktion eingeben, um die Kategorie zurückzugeben, zu der er gehört. Geben Sie beispielsweise den Text „iPhone 12 ist endlich erschienen!“ ein, um zur Kategorie „Technologie“ zurückzukehren.

  1. Zusammenfassung

Als einfacher und effektiver Klassifizierungsalgorithmus wird der Naive Bayes-Algorithmus auch häufig in Python verwendet. In diesem Artikel werden die Methoden und Schritte zur Verwendung des Naive-Bayes-Klassifikators vorgestellt und die Textklassifizierung basierend auf Naive Bayes als Beispiel verwendet, um die praktische Anwendung des Klassifikators zu demonstrieren. Im eigentlichen Anwendungsprozess sind auch Datenvorverarbeitung, Merkmalsauswahl und andere Vorgänge erforderlich, um die Genauigkeit des Klassifikators zu verbessern.

Das obige ist der detaillierte Inhalt vonNaive Bayes-Beispiele in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn