LoginSignup
74
92

More than 3 years have passed since last update.

PyCaretでタイタニック生存予想をしてみた

Last updated at Posted at 2020-04-25

はじめに

先日、リリースされた機械学習ライブラリーPyCaretを使ってみました。
データの特徴量分析や複数のモデルとの性能比較作業が自動化され、これまでのデータサイエンティストの作業時間がだいぶ減ると思います。

今回は、タイタニック生存予想問題を、PyCaretにかけて、予測結果をKaggleにSubmissionし、その結果を見てみます。

*前回に掲載した、PyCaretでワインの品質を分類してみた の後続記事です。 *

1. PyCaretのインストール

下記のコードを実行しインストールします。
Anacondaを使っていますが、PyCaret専用の仮想環境を立ち上げてインストールしました。
既存のCondaで管理されてる仮想環境では、エラーが発生する場合があります。(恐らくpipとcondaとの衝突が原因)

pip install pycaret

2.データの取得

KaggleのTitanicサイトで、train.csvとtest.csvがダウンロード可能です。
https://www.kaggle.com/c/titanic/data

import pandas as pd
train_data = pd.read_csv("train.csv")
train_data.head()

結果
image.png

Pandasのprofile_report()を使い、データの中身を見てみます。

import pandas_profiling
train_data.profile_report()

結果
image.png

3.データの前処理

setup()を利用して、データの前処理を行います。その時、目的変数を引数でSurvivedと指定します。

from pycaret.classification import *
exp_titanic = setup(data = train_data, target = 'Survived')

結果 (10項目まで表記)

image.png

4.モデルの比較

compare_models()で、データセットを複数の分類モデルを用いて分析を行い、その結果を表にまとめます。どの分類モデルを使うか検討の時、かなり役に立つ機能です。

Pycaretが提供する分類モデルは10種類以上で、下記のリンクで確認が可能です。

compare_models()

catBoost ClassifierのAccuracy 83.63%でした。今回は、PyCaretの性能評価ということで、9位のRandom Forest Classifierで話を進めます。

結果

image.png

5.分析モデルの生成

分類モデルを選択して、モデリングを行います。create_model()を使います。
今回は、Random Forest Classifierモデルを利用します。

dt = create_model('rf', round=2)

結果

image.png

6.分析モデルのチューニング

tune_modelを用いて、モデルのチューニングも行います。

tuned_rf = tune_model('rf',round=2)

結果

チューニング前のAccuracyの平均が0.80、チューニング後のAccuracyの平均が0.81と改善されました。

image.png

7.分析モデルの可視化

plot_modelを用いて、分析結果を可視化します。

まず、AUC曲線をプロットします。

plot_model(tuned_rf, plot = 'auc')

結果

!image.png

次に、混同行列をプロットします。

plot_model(tuned_lightgbm, plot = 'confusion_matrix')

結果

!image.png

8.分析モデルの評価

evaluate_model()を使い、複数の評価を同時に行うことが可能です。

evaluate_model(tuned_rf)

黄色い枠の中のボタンを押すと、各々の評価結果が表示されます。

結果

!image.png

9.予測

finalize_model()でモデルをFinalizeした後、predict_model()で予測を行います。
予測の時には、テストデータ(ここでは、test.csv)を使います。

final_rf = finalize_model(tuned_rf)
data_unseen = pd.read_csv('test.csv')
result = predict_model(final_rf, data = data_unseen)

Label列は、予測の結果を意味します。

結果

!image.png

Kaggleにこの結果をUploadしました。Scoreは0.76076でした。
image.png

10.まとめ

  1. タイタニック生存予測のデータセットを利用し、PyCaretで分析を行いました。
  2. 大変使いやすいです。商用分析ツールのAlteryx, DataRobotにも負けないほどの高い分析機能だと思います。

10.1 分析に使用したPycaret関数一覧

  1. データの前処理: setup()
  2. モデルの比較: compare_models()
  3. 分析モデルの生成: create_model()
  4. チューニング: tune_model()
  5. 可視化: plot_model()
  6. 評価: evaluate_model()
  7. 予測: finalize_model(), predict_model()

11.参考資料

1.PyCaret Home Page , http://www.pycaret.org/
2.PyCaret Classification, https://pycaret.org/classification/
3. 最速でPyCaretを使ってみた, https://qiita.com/s_fukuzawa/items/5dd40a008dac76595eea
4.PyCaretでワインの品質を分類してみた. https://qiita.com/kotai2003/items/c8fa7e55230d0fa0cc8e

74
92
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
74
92