Scikit-learnを使用してPythonで機械学習分類器を構築する方法
序章
機械学習は、コンピューターサイエンス、人工知能、統計学の研究分野です。 機械学習の焦点は、パターンを学習し、データから予測を行うためのアルゴリズムをトレーニングすることです。 機械学習は、コンピューターを使用して意思決定プロセスを自動化できるため、特に価値があります。
機械学習アプリケーションはいたるところにあります。 NetflixとAmazonは、機械学習を使用して新製品の推奨事項を作成します。 銀行は機械学習を使用してクレジットカード取引の不正行為を検出し、医療会社は機械学習を使用して患者を監視、評価、診断し始めています。
このチュートリアルでは、Python用の機械学習ツールである Scikit-learn を使用して、Pythonで簡単な機械学習アルゴリズムを実装します。 乳がん腫瘍情報のデータベースを使用して、腫瘍が悪性か良性かを予測する単純ベイズ(NB)分類器を使用します。
このチュートリアルを終えると、Pythonで独自の機械学習モデルを構築する方法がわかります。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- Python3とローカルプログラミング環境がコンピューターにセットアップされています。 適切なインストールおよびオペレーティングシステムのセットアップガイドに従って、これを構成できます。
Pythonを初めて使用する場合は、Python3でコーディングする方法を調べて言語に慣れることができます。 - このチュートリアルでは、virtualenvにインストールされている JupyterNotebook。 Jupyter Notebookは、機械学習実験を実行するときに非常に役立ちます。 コードの短いブロックを実行して結果をすばやく確認できるため、コードのテストとデバッグが簡単になります。
ステップ1—Scikit-learnのインポート
まず、Pythonモジュール Scikit-learn をインストールします。これは、Python用の最も優れた最も文書化された機械学習ライブラリの1つです。
コーディングプロジェクトを開始するには、Python3プログラミング環境をアクティブ化しましょう。 環境が配置されているディレクトリにいることを確認し、次のコマンドを実行します。
- . my_env/bin/activate
プログラミング環境をアクティブにして、Sckikit-learnモジュールがすでにインストールされているかどうかを確認します。
- python -c "import sklearn"
sklearn
がインストールされている場合、このコマンドはエラーなしで完了します。 インストールされていない場合は、次のエラーメッセージが表示されます。
OutputTraceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'sklearn'
エラーメッセージは、sklearn
がインストールされていないことを示しているため、pip
を使用してライブラリをダウンロードします。
- pip install scikit-learn[alldeps]
インストールが完了したら、JupyterNotebookを起動します。
- jupyter notebook
Jupyterで、 MLTutorialという新しいPythonノートブックを作成します。 ノートブックの最初のセルで、 import sklearn
モジュール:
import sklearn
ノートブックは次の図のようになります。
ノートブックにsklearn
がインポートされたので、機械学習モデルのデータセットの操作を開始できます。
ステップ2—Scikit-learnのデータセットをインポートする
このチュートリアルで使用するデータセットは、乳がんウィスコンシン診断データベースです。 データセットには、乳がん腫瘍に関するさまざまな情報のほか、悪性または良性の分類ラベルが含まれています。 データセットには、569個の腫瘍に関する569個のインスタンスまたはデータがあり、30個の属性、または腫瘍の半径、テクスチャ、滑らかさ、面積などの特徴に関する情報が含まれています。
このデータセットを使用して、腫瘍情報を使用して腫瘍が悪性か良性かを予測する機械学習モデルを構築します。
Scikit-learnには、Pythonにロードできるさまざまなデータセットがインストールされており、必要なデータセットが含まれています。 データセットをインポートしてロードします。
...
from sklearn.datasets import load_breast_cancer
# Load dataset
data = load_breast_cancer()
data
variable は、辞書のように機能するPythonオブジェクトを表します。 考慮すべき重要な辞書キーは、分類ラベル名(target_names
)、実際のラベル(target
)、属性/機能名(feature_names
)、および属性( data
)。
属性は、分類子の重要な部分です。 属性は、データの性質に関する重要な特性をキャプチャします。 予測しようとしているラベル(悪性腫瘍と良性腫瘍)を考えると、考えられる有用な属性には、腫瘍のサイズ、半径、テクスチャが含まれます。
重要な情報セットごとに新しい変数を作成し、データを割り当てます。
...
# Organize our data
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']
これで、情報のセットごとにリストができました。 データセットをよりよく理解するために、クラスラベル、最初のデータインスタンスのラベル、機能名、および最初のデータインスタンスの機能値を出力して、データを見てみましょう。
...
# Look at our data
print(label_names)
print(labels[0])
print(feature_names[0])
print(features[0])
コードを実行すると、次の結果が表示されます。
画像が示すように、クラス名は悪性と良性であり、これらは0
と1
のバイナリ値にマッピングされます。ここで[X153X ]