scikit-learn ロジスティック回帰|多クラス分類(機械学習)

scikit-learn 使い方(機械学習)多クラス分類

scikit-learnライブラリを使った、ロジスティック回帰分析による多クラス分類の方法を紹介します。

以前、紹介したロジスティック回帰分析では、2値(○ or ×)を予測しましたが、3値(○ or △ or ×)や4値(○ or △ or □ ×)など、多数のクラスに分類(予測)しなければならないケースも想定されるので、今回はその方法を解説します。

アヤメの品種分類(3品種)

今回は、アヤメのデータから「セトサ種」「バージニカ種」「バージカラー種」の3品種に分類する予測モデルを作っていきます。

 

アヤメのデータの基本情報

scikit-learnでは、機械学習のための様々なdatasetが提供されており、アヤメのデータもその1つです。

アヤメの「がく片の長さ」「がく片の幅」「花びらの長さ」「花びらの幅」の150個のデータを使って、3品種に分類する予測モデルを作成します。

日本語表記に必要なモジュールをインストール

解説

  1. 「pip install japanize-matplotlib」と入力して実行します。

機械学習に必要なモジュールのインポート

機械学習に必要なツールをインポートして、使用できるようにします。

解説

  1. 「import pandas as pd」・・・データフレームを操作
  2. 「from pandas import Series,DataFrame」・・・1次元・2次元配列の処理
  3. 「import matplotlib.pyplot  as plt」・・・グラフ作成(matplotlib)
  4. 「import japanize_matplotlib」・・・日本語対応(matplotlib)
  5. 「import seaborn as sns」・・・グラフ作成(seaborn)
  6. 「sns.set(font=”IPAexGothic”)」・・・日本語対応(seaborn)
  7. 「import sklearn」・・・機械学習のインポート
  8. 「from sklearn.linear_model import LogisticRegression」・・・ロジスティック回帰分析のインポート
  9. 「from sklearn.model_selection import train_test_split」・・・「訓練用」と「テスト用」にデータを分割
  10. 「from sklearn import linear_model」・・・回帰モデルのインポート
  11. 「from sklearn.datasets import load_iris」・・・アヤメデータのインポート

機械学習の事前準備_1(datasetからデータフレームへの変換)

解説

  1. 「ayame」にアヤメのデータを代入
  2.  Xに説明変数(’Sepal Length’,’Sepal Width’,’Petal Length’,’Petal Width’)を代入
  3.  Yに目的変数(’Species’)を代入
  4.  Xをデータフレーム の形式に変更
  5.  Yをデータフレーム の形式に変更
  6.  説明変数 Xの列名を日本語(がく片の長さ・がく片の幅・花びらの長さ・花びらの幅)に変更
  7.  目的変数 Yの列名を日本語(アヤメの種類)に変更

機械学習の事前準備_2(目的変数のデータ整理)

目的変数(アヤメの種類)の列に入力されているデータが数値(1・2・3)であるため、分かりやすくするために品種名(セトサ種・バージニカ種・バージカラー種)に変更します。

解説

  1. if文を使って、データが「1」のときは「セトサ種」、データが「2」のときは「バージニカ種」、それ以外(3)のときは「バージカラー種」と入力。
  2. 説明変数(df1)と目的変数(df2)を結合して、1つのデータフレーム (df3)を作成

アヤメのデータフレーム の内容確認

head()で最初の5行、tail()で最後の5行を確認。150個(0〜149)のデータがあるのが分かります。「アヤメの種類」が目的変数で、それ以外が説明変数です。

解説

  1. データフレーム の最初の5行を確認
  2. データフレーム の最後の5行を確認

アヤメ3品種のそれぞれの特徴(パターン)を見える化

seabornを使ってアヤメの統計データをグラフ化します。各列同士の散布図を表示し、特徴量を比較。セトサ種(青色)は他の2品種に対して、特徴がはっきりしていることが分かります。

解説

  1. ペアプロット図(散布図行列)の表示。各散布図の対角線にはヒストグラムが表示されます。

ロジスティック回帰(多クラス分類)の実行

アヤメの全てのデータは使わずに「訓練用」と「テスト用」にデータを分割し、機械学習を実行します。訓練用のデータで作成した予測モデルを、テスト用のデータで試すことで予測の精度を検証することができます。

解説

  1. インスタンスの作成(ロジスティック回帰の設計図の具現化)。
  2. 説明変数のデータを訓練用データ(X_train)とテスト用データ(Y_train)に分割。目的変数のデータを、訓練用データ(X_test)とテスト用データ(Y_test)に分割。
  3. ロジスティック回帰分析の実行(予測モデルの作成)。

ロジスティック回帰(多クラス分類)モデルの検証結果

「訓練用データ」で作成した機械学習モデルを、「テスト用データ」で精度を検証した結果、92%という高い精度を得ました。

まとめ

ロジスティック回帰分析(多クラス分類)を使い、予測結果を3値(セトサ種・バージニカ種・バージカラー種)に分類することができました。

ペアプロット図(各列同士の散布図)を見ると分かるように、3品種にそれぞれ特徴があったため、精度の高い予測モデル(92%)を作成することができました。

今回のアヤメのデータは150個でしたが、ビッグデータ(例 : 100万のデータ)を使って機械学習を行うことで、より精度の高い実用的な予測モデルを作成することが可能です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です