Python は、科学計算ライブラリとデータ処理ツールの豊富なセットを備えた、シンプルで学習しやすいプログラミング言語です。中でもナイーブベイズアルゴリズムは古典的な機械学習手法としてPython言語でも広く使われています。この記事では、Python での Naive Bayes の使い方と手順を例を使って紹介します。
Naive Bayes アルゴリズムは、ベイズの定理に基づく分類アルゴリズムです。その中心的な考え方は、既知のトレーニング データを使用することです。セットの特性新しいデータの分類結果を推測するために使用されます。実際のアプリケーションでは、Naive Bayes アルゴリズムは、テキスト分類、スパム フィルタリング、センチメント分析などのシナリオでよく使用されます。
Naive Bayes アルゴリズムの特徴は、各特徴が互いに独立であると仮定していることですが、実際の状況ではこの仮定が当てはまらないことが多いため、Naive Bayes アルゴリズムは「ナイーブ」と呼ばれます。この前提にもかかわらず、Naive Bayes は短いテキストの分類などの問題では依然として良好なパフォーマンスを発揮します。
Python で単純ベイズ分類器を使用する手順は次のように要約できます。
2.1 データの準備
まず、分類するトレーニング データとテスト データを準備する必要があります。このデータはテキスト、画像、音声などの形式にすることができますが、コンピュータが理解できる形式に変換する必要があります。テキスト分類問題では、多くの場合、テキストをベクトル表現に変換する必要があります。
2.2 トレーニング モデル
次に、トレーニング データ セットを使用して単純ベイズ分類器を構築する必要があります。 Python には一般的に使用される 3 つの単純ベイズ分類器があります:
テキスト分類を例に挙げると、sklearn ライブラリによって提供される TfidfVectorizer クラスを使用してテキストをベクトル表現に変換し、トレーニングに MultinomialNB 分類器を使用できます。
2.3 テスト モデル
トレーニングが完了したら、モデルのパフォーマンスを評価するためにテスト データ セットを使用する必要があります。通常、テスト データ セットとトレーニング データ セットは独立しています。トレーニング データセットのデータはテスト中に使用できないことに注意してください。 sklearn ライブラリによって提供される activity_score 関数を使用して、モデルの精度を計算できます。
ナイーブ ベイズ分類器の実際の応用例を示すために、この記事ではナイーブ ベイズに基づくテキスト分類を使用します。 。
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 がついにリリースされました!」というテキストを入力すると、「テクノロジー」カテゴリに戻ります。
シンプルで効果的な分類アルゴリズムとして、Naive Bayes アルゴリズムも Python で広く使用されています。この記事では、Naive Bayes 分類器を使用する方法と手順を紹介し、Naive Bayes に基づくテキスト分類を例として取り上げ、分類器の実際の応用例を示します。実際の適用プロセスでは、分類器の精度を向上させるために、データの前処理、特徴の選択などの操作も必要になります。
以上がPython での単純ベイズの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。