PythonからForecastFlowで訓練と推論を行う方法
この度、PythonからForecastFlowの訓練を行う機能を追加しました。
この記事では、訓練と推論をPythonから行う方法について紹介します。
インストール
pip install forecastflow
でインストールします。
以下はforecastflow==4.2.3
を使用して執筆しています。
アカウント認証とプロジェクトの指定
ForecastFlowを使用するためには、訓練可能なアカウントが必要です。
アカウント情報を使用して認証を行います。
from forecastflow import User email = 'メールアドレス' password = 'パスワード' user = User(email, password)
プロジェクトの指定
訓練を行うプロジェクトのIDを指定します。
存在しない場合はWeb上でプロジェクトを作成してください。
project_id = '訓練を行うプロジェクトのID'
project = user.get_project(project_id)
プロジェクトIDが不明な場合
プロジェクト画面のURLは以下の形式になっているため、URLからIDを確認します。
https://forecastflow.org/project/{プロジェクトID}
データの用意
訓練にはForecastFlow上に訓練用のデータが必要です。
データの指定方法について説明します。
Pythonからデータのアップロードを行う場合
Pythonからはpandas.DataFrameをアップロードすることができます。
import pandas as pd train_df = pd.read_csv('train.csv', dtype=object) train_data = project.create_data_source( data=train_df, name='train_data.csv', label=DataSourceLabel.TRAIN, description='data source for training' )
既にForecastFlow上に存在するデータを使用する場合
データのIDを直接指定することで、ForecastFlow上のデータを訓練に使用できます。
train_data = project.get_data_source('訓練データのID')
モデルを訓練する
訓練設定を作成します。
訓練するモデルに合わせて設定を作ります。
- 分類モデルを訓練する場合
- ClassifierTrainingSettingsとClassificationMetricsを使用
- 回帰モデルを訓練する場合
- RegressorTrainingSettingsとRegressionMetricsを使用
from forecastflow.training import ClassifierTrainingSettings, RegressorTrainingSettings from forecastflow.enums import ClassificationMetrics, RegressionMetrics ### 分類モデルの場合 ### classifier_settings = ClassifierTrainingSettings( target='col5', # 目的変数の列の名前 metric=ClassificationMetrics.RECALL, # パラメータ探索時の指標 primary_id='ids', # 主IDの列の名前 secondary_ids=['col4', 'col6'], # 副IDの列の名前 feature_excludes=['col1', 'col2'], # 訓練時に除外する列の名前 random_state=777 # 乱数のシード値 )
作成した訓練設定をもとに訓練を行います。
テストデータの指定は以下のいずれかで行います。
- データを分割して訓練データとテストデータに分ける
- テストデータを別で用意する
classifier_model = train_data.create_model( train_settings=classifier_settings, # 作成した設定オブジェクト name='new model', # モデルの名前 test_frac=0.28, # テストデータとして使用する割合 test_data_source=None, # 別に用意したテストデータ description='trained model' # モデルの説明 )
訓練したモデルで推論を行う
モデルにデータを与えて推論を行います。
prediction = classifier_model.create_prediction( data_source=pred_data, # 推論を行うためのデータ name='new prediction' # 推論の名前 )
推論結果を取得する
DataFrameとして推論結果を取得できます。
predicted_df = prediction.get_result()
終わりに
この記事ではPythonからForecastFlowによる訓練と推論を行う方法を紹介しました。
Pythonで完結して処理を行うことができます。
是非ご利用ください。
仲田勇太