利用

fujitsu-automlは、sapientml .のプラグインの1つとして提供されています。 Fujitsu AutoMLの使い方は、API呼び出しでの認証を除いて、SapientMLの使い方と基本同じです。

sapientmlは、CSV形式のデータセットと機械学習タスクの要件から機械学習モデルをトレーニングおよび予測するソースコードを生成します。

SapientML クラス

sapientmlは、SapientMLのトップレベルAPIを提供するSapientMLクラスを提供します。SapientMLのコンストラクタでは、まずタスクの要件としてtarget_columnsを設定する必要があります。target_columnsは、予測するタスクを指定します。次に、機械学習タスクの種類として、classificationまたはregressionからtask_typeを設定できます。task_typeの設定をスキップすることもできます。その場合、SapientMLはターゲットカラムの値を調べてタスクタイプを自動的に提案します。

from sapientml import SapientML

cls = SapientML(
    model_type="fujitsu-automl",
    target_columns=["survived"],
    task_type=None, # suggested automatically from the target columns
)

scikit-learnのような他の有名なライブラリのモデルクラスと同様に、SapientMLは、生成されたコードを使用してモデルのトレーニングと予測を行うためのfitpredictを提供します。

import pandas as pd
from sklearn.metrics import f1_score
from sklearn.model_selection import train_test_split

train_data = pd.read_csv("https://github.com/sapientml/sapientml/files/12481088/titanic.csv")
train_data, test_data = train_test_split(train_data)
y_true = test_data["survived"].reset_index(drop=True)
test_data.drop(["survived"], axis=1, inplace=True)

cls.fit(train_data, output_dir="./outputs")
y_pred = cls.predict(test_data)

print(f"F1 score: {f1_score(y_true, y_pred)}")

生成されたソースコード

fitを呼び出した後、生成されたソースコードを./outputsフォルダに保存されます。fitによって生成されたファイルの例を次に示します。

outputs
├── 1_script.py
├── 2_script.py
├── 3_script.py
├── final_predict.py
├── final_script.out.json
├── final_script.py
├── final_train.py
└── lib
    └── sample_dataset.py

1_script.py2_script.py、および3_script.pyは、プリプロセッサと上位3つのもっともらしいモデルを使用したホールドアウト検証のスクリプトです。 final_script.pyは、上位3つのモデルの中で実際に最も高いスコアを達成したモデルを選択するスクリプトであり、final_script.out.jsonにはそのスコアが含まれています。 final_train.pyは、選択されたモデルをトレーニングするためのスクリプトであり、final_predict.pyは、final_train.pyによってトレーニングされたモデルを使用して予測するためのスクリプトです。 libフォルダには、上記のスクリプトが使用するモジュールが含まれています。

生成されたコードをモデルとして使用

fitを呼び出した後、cls.modelも取得できます。これは、生成されたソースコードとプリプロセッサの.pklファイル、および実際の機械学習モデルを含むGeneratedModelインスタンスです。インスタンスはまた、fitpredictを提供する通常のモデルをキャストします。

cls.fit(train_data)
model = cls.model # obtains GeneratedModel instance

ソースコードと.pklファイルのセットは、model.filesを参照するか、./outputsフォルダにmodel.save ("./model")を参照してください。次に、GeneratedModelに含まれるファイルの例を示します。

model
├── final_predict.py
├── final_train.py
├── lib
│   └── sample_dataset.py
├── model.pkl
├── ordinalEncoder.pkl
├── simpleimputer-numeric.pkl
└── simpleimputer-string.pkl

model.fitの実際の動作は、final_train.pyを実行するサブプロセスです。 model.fit (another_train_data)は既存のモデルを再トレーニングするのではなく、新しいモデルを構築することに注意してください。 model.predictは、final_predict.pyを実行するサブプロセスも作成します。

SapientMLは、生成されたモデルからSapientMLインスタンスを復元するユーティリティ関数を提供します。

import pickle

cls.fit(train_data)
with open("model.pkl", "wb") as f:
    pickle.dump(sml.model, f)

with open("model.pkl", "rb") as f:
    model = pickle.load(f)
sml = SapientML.from_pretrained(model)