PythonからForecastFlowで訓練と推論を行う方法
※PythonからForecastFlowの訓練を行う機能を追加しました
この記事では、訓練と推論をPythonから行う方法について紹介します
- インストール
- アカウント認証とプロジェクトの指定
- プロジェクトの指定
- プロジェクトIDが不明な場合
- データの用意
- Pythonからデータのアップロードを行う場合
- 既にForecastFlow上に存在するデータを使用する場合
- モデルを訓練する
- 訓練したモデルで推論を行う
- 推論結果を取得する
- 終わりに
インストール
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で完結して処理を行うことができます
是非、利用してみて下さい
以上
この記事へのコメントはありません。