はじめに
この実験では、Python の scikit - learn ライブラリを使ったナイーブベイズ分類器の使用例を見ていきます。ナイーブベイズ分類器は、分類タスクに一般的に使用される一連の教師あり学習アルゴリズムです。これらの分類器は、クラス変数の値が与えられたときに各特徴のペア間の条件付き独立性の仮定を用いてベイズの定理を適用することに基づいています。
この例では、scikit - learn のガウスナイーブベイズ分類器を使ってアイリスデータセットを分類します。これは機械学習における人気のあるデータセットです。目的は、アイリスの花の種類を花弁と花萼の寸法に基づいて予測することです。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替えて、Jupyter Notebook を使った練習にアクセスします。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に直面した場合は、Labby にお尋ねください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポートとデータセットの読み込み
必要なライブラリをインポートしてアイリスデータセットを読み込みましょう。データセットを読み込むために、sklearn.datasetsモジュールのload_iris関数を使います。
from sklearn.datasets import load_iris
## アイリスデータセットを読み込む
iris = load_iris()
X = iris.data ## 特徴量
y = iris.target ## 目的変数
print("サンプル数:", X.shape[0])
print("特徴量数:", X.shape[1])
print("クラス数:", len(set(y)))
データセットを学習用とテスト用に分割する
次に、sklearn.model_selectionモジュールのtrain_test_split関数を使って、データセットを学習用とテスト用に分割します。学習用セットはナイーブベイズ分類器を訓練するために使用され、テスト用セットはその性能を評価するために使用されます。
from sklearn.model_selection import train_test_split
## データセットを学習用とテスト用に分割する
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
ガウスナイーブベイズ分類器の訓練と評価
ここで、学習用セットでガウスナイーブベイズ分類器を訓練し、テスト用セットでその性能を評価します。sklearn.naive_bayesモジュールのGaussianNBクラスを使用します。
from sklearn.naive_bayes import GaussianNB
## ガウスナイーブベイズ分類器を作成する
gnb = GaussianNB()
## 分類器を訓練する
gnb.fit(X_train, y_train)
## テスト用セットの目的変数を予測する
y_pred = gnb.predict(X_test)
## 分類器の正解率を計算する
accuracy = (y_pred == y_test).sum() / len(y_test)
print("正解率:", accuracy)
結果の解釈
得られた正解率に基づいて、アイリスデータセットに対するガウスナイーブベイズ分類器の性能を解釈することができます。正解率は、テスト用セットにおける正しく予測された目的変数の値の割合を表します。この場合、正解率は正しく分類されたアイリスの花の種類の割合を表します。
まとめ
この実験では、scikit - learn のガウスナイーブベイズ分類器を使用する例を見てきました。私たちはアイリスデータセットを読み込み、学習用とテスト用に分割し、学習用セットで分類器を訓練し、テスト用セットでその性能を評価しました。得られた正解率は、分類器がアイリスの花の種類を予測する際の性能がどの程度良かったかを示しています。ナイーブベイズ分類器は、分類タスクに対して単純でありながら効果的なアルゴリズムであり、様々な現実世界のアプリケーションで一般的に使用されています。