利用
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
は、生成されたコードを使用してモデルのトレーニングと予測を行うためのfit
とpredict
を提供します。
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.py
、2_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
インスタンスです。インスタンスはまた、fit
とpredict
を提供する通常のモデルをキャストします。
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)