ホームページ  >  記事  >  バックエンド開発  >  Python での単純ベイズの例

Python での単純ベイズの例

王林
王林オリジナル
2023-06-09 23:36:06901ブラウズ

Python は、科学計算ライブラリとデータ処理ツールの豊富なセットを備えた、シンプルで学習しやすいプログラミング言語です。中でもナイーブベイズアルゴリズムは古典的な機械学習手法としてPython言語でも広く使われています。この記事では、Python での Naive Bayes の使い方と手順を例を使って紹介します。

  1. Naive Bayes の概要

Naive Bayes アルゴリズムは、ベイズの定理に基づく分類アルゴリズムです。その中心的な考え方は、既知のトレーニング データを使用することです。セットの特性新しいデータの分類結果を推測するために使用されます。実際のアプリケーションでは、Naive Bayes アルゴリズムは、テキスト分類、スパム フィルタリング、センチメント分析などのシナリオでよく使用されます。

Naive Bayes アルゴリズムの特徴は、各特徴が互いに独立であると仮定していることですが、実際の状況ではこの仮定が当てはまらないことが多いため、Naive Bayes アルゴリズムは「ナイーブ」と呼ばれます。この前提にもかかわらず、Naive Bayes は短いテキストの分類などの問題では依然として良好なパフォーマンスを発揮します。

  1. 単純ベイズ分類器の使用

Python で単純ベイズ分類器を使用する手順は次のように要約できます。

2.1 データの準備

まず、分類するトレーニング データとテスト データを準備する必要があります。このデータはテキスト、画像、音声などの形式にすることができますが、コンピュータが理解できる形式に変換する必要があります。テキスト分類問題では、多くの場合、テキストをベクトル表現に変換する必要があります。

2.2 トレーニング モデル

次に、トレーニング データ セットを使用して単純ベイズ分類器を構築する必要があります。 Python には一般的に使用される 3 つの単純ベイズ分類器があります:

  • GaussianNB: 連続データの分類に適しています。
  • BernoulliNB: バイナリ データの分類に適しています。
  • MultinomialNB: 多変量データの分類に適しています。

テキスト分類を例に挙げると、sklearn ライブラリによって提供される TfidfVectorizer クラスを使用してテキストをベクトル表現に変換し、トレーニングに MultinomialNB 分類器を使用できます。

2.3 テスト モデル

トレーニングが完了したら、モデルのパフォーマンスを評価するためにテスト データ セットを使用する必要があります。通常、テスト データ セットとトレーニング データ セットは独立しています。トレーニング データセットのデータはテスト中に使用できないことに注意してください。 sklearn ライブラリによって提供される activity_score 関数を使用して、モデルの精度を計算できます。

  1. 例: ナイーブ ベイズに基づくテキスト分類

ナイーブ ベイズ分類器の実際の応用例を示すために、この記事ではナイーブ ベイズに基づくテキスト分類を使用します。 。

3.1 データの準備

まず、インターネットから「スポーツ ニュース」と「科学技術ニュース」という 2 つのテキスト データ セットを検索します。各データ セットには 1,000 個のテキストが含まれています。 2 つのデータ セットを別のフォルダーに置き、テキストにそれぞれ「スポーツ」と「テクノロジー」というラベルを付けます。

3.2 sklearn ライブラリを使用して分類する

次に、sklearn ライブラリが提供する単純ベイズ分類器を分類に使用します。

(1) 関連ライブラリのインポート

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) テキスト データとその注釈の読み取り

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) テキストをベクトル表現に変換

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

(4) モデルをトレーニングし、精度を返します

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) モデルをテストします

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

3.3 結果分析

上記のコードを実行して分類器の精度を取得しますは0.955です。実際に分類を行う場合は、predict関数に分類対象のテキストを入力するだけで、そのテキストが属するカテゴリが返されます。たとえば、「iPhone 12 がついにリリースされました!」というテキストを入力すると、「テクノロジー」カテゴリに戻ります。

  1. 概要

シンプルで効果的な分類アルゴリズムとして、Naive Bayes アルゴリズムも Python で広く使用されています。この記事では、Naive Bayes 分類器を使用する方法と手順を紹介し、Naive Bayes に基づくテキスト分類を例として取り上げ、分類器の実際の応用例を示します。実際の適用プロセスでは、分類器の精度を向上させるために、データの前処理、特徴の選択などの操作も必要になります。

以上がPython での単純ベイズの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。