Pythonによるカテゴリデータの分析手順と機械学習手法適用例

python活用 python

機械学習を用いてデータ分析してみたいです。

このような要望にお応えします。

今回は、カテゴリデータの分析を通じて機械学習を使用していきたいと思います。

分析対象のデータは、UCI machine learning data setの「 Car Evaluation Data Set 」を使用します。( https://archive.ics.uci.edu/ml/datasets/Car+Evaluation )

データの確認と準備

まず、データを読み込んで確認します。

下記のようにデータは格納されます。

データを構成する各要素ごとの情報を確認します。

推定したいクラスの内訳を確認します。

データの欠損の有無を確認します。データの欠損は、0のようです。

学習用データ、検証用データを準備します。

機械学習手法が適用できるようにデータの特徴量を作りこみます。カテゴリ変数を数値に変換します。

現状のデータは、下記のように特徴量が文字列となっていますので、こちらを数値に変換します。

カテゴリ変数の数値への変換は、Pythonライブラリcategory_encodersを使用します。ライブラリがない場合は、pip等を使用してインストールします。その後、下記のように変換します。

変換の結果、以下のように数値に変換されたデータを得ることができます。

機械学習モデルの定義と学習と評価

決定木の適用

カテゴリ変数を含むデータに対して、決定木を適用してみます。

まず決定木のモデル定義、学習、評価は以下のように実施しました。

学習データでのモデルの正解率とテストデータでのモデルの正解率を確認すると、過学習はしてなさそうです。

混同行列を用いて分類性能を確認してみます。

混同行列は、分類アルゴリズムの性能を確認することができます。そして、各カテゴリごとに分類された正しい予測と正しくない予測を見ることができます。

学習した決定木モデルを可視化することも可能です。

先程はgini係数に基づいて、決定木を適用しました。次は、entropyに基づいて決定木モデルの定義、学習、評価をしてみます。

entropyに基づいて決定木モデルの評価結果は以下になります。

ランダムフォレストの適用

ランダムフォレストのモデル定義、学習、評価は以下のように実施しました。

ランダムフォレストのモデル評価は以下になります。

sklearnのランダムフォレストでは、各特徴量の評価ができますので、分類への影響が低い特徴量を削ることを考慮することも可能です。

分類への影響が低い特徴量を削除して、再度モデルを学習してみるのもいいかもしれません。

KNN(k-Neighbors Classifier)の適用

KNNのモデル定義、学習、評価は以下のように実施しました。

KNNのモデル評価は以下になります。

まとめ

カテゴリデータの分析を通じて機械学習を適用してみました。Pythonライブラリsklearnでは今回紹介した機械学習手法も比較的簡単に使用することができますので活用してみてはいかがでしょうか。

タイトルとURLをコピーしました