5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PyCaretで自動的に機械学習をやってみる

Posted at

機械学習の勉強を始めたのですが、覚えることが多くてたいへんです… 楽ができるのではと思い、PyCaretに挑戦してみました。PyCaretは機械学習を自動化するライブラリです。

今回はPyCaretをつかって、Kaggleのタイタニック問題を解いてみます。Notebookはこちらです。
https://www.kaggle.com/code/kysd2023/automl-for-titanic

さて、Kaggleのアカウントをまだ作ってない方は、Kaggleで始める機械学習入門を参考にアカウントを作ってみてください。まずタイタニック問題のページを開き、Codeタブで「+New Notebook」を選択します。生成されるNotebookには既に訓練データと評価データが設定済みなので、このNotebookにコードを記載して進めます。

pycaret01_newnotebook.png

まずはPyCaretのインストールです。多少エラーが出るかもしれませんが、とりあえず気にせず進めます。ここで数分かかるので気長に待ちます。

# PyCaretのインストール
!pip install pycaret

次にデータを読み込みます。これはどんなやり方でも共通ですね。

# データ読み込み
import pandas as pd
train_df = pd.read_csv("/kaggle/input/titanic/train.csv")
test_df = pd.read_csv("/kaggle/input/titanic/test.csv")
train_df

pycaret02_data.png

ではPyCaretをセットアップします。ここで欠損値の扱いの指定や、データ型の設定ができるのですが、今回は何もせずにとりあえず進めます。タイタニック問題の目的は生存したかどうかを予測することにあるので、目的変数として「Survived」を指定します。

# PyCaretセットアップ
from pycaret.classification import setup
clf = setup(data=train_df, target="Survived", ignore_features = None)

pycaret03_setup.png

次がPyCaretの面白いところだと思うんですが、様々なモデルを一気に比較します。ロジスティクス回帰が最も精度と高いとされたので、これを使います。

# モデルの比較
from pycaret.classification import compare_models
best_model = compare_models() 

pycaret04_models.png

次にハイパーパラメータを最適化します。ハイパーパラメータとは、学習前に人が決めておくパラメータです。これを自動で決めてくれるのは助かりますね。

# パイパーパラメータの最適化
from pycaret.classification import tune_model
tuned_model = tune_model(best_model)

pycaret05_hyperparameters.png

次にできたモデルを評価します。最も重要な特徴量は名前でした… そんなわけ無いだろうと思いますが、とりあえずこのまま進めます。

# モデルの評価
from pycaret.classification import plot_model
plot_model(tuned_model, plot="feature") 

pycarete06_features.png

モデルを確定し、テストデータで予測を行います。

# モデルの確定
from pycaret.classification import finalize_model
final_model = finalize_model(tuned_model)

# 予測
from pycaret.classification import predict_model
pred_df = predict_model(final_model, data=test_df)

提出用データを作成します。

# 提出用データ作成
submission_df = pd.DataFrame({
        "PassengerId": pred_df["PassengerId"],
        "Survived": pred_df["prediction_label"].astype(int)
    })

path="/kaggle/working/submission.csv"
submission_df.to_csv(path, index=False)
print(f"Submission exported to {path}")

提出用データができたら、note右側の「Submit」ボタンを押して提出してください。しばらくするとスコアが計算されます。

pycaret07_submit.png

ということで、あまりうまく行ってないのではと思いますが、チュートリアルでタイタニック問題に取り組んだときよりは若干スコアが上がっています(0.76→0.78)。

自動的に解けるとはいえ、訓練データのデータ型指定や欠損値処理が重要そうですね。それでは今回のチャレンジは以上にします。お疲れ様でした。

5
2
0

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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?