1. HOME
  2. ブログ
  3. PythonからForecastFlowで訓練と推論を行う方法

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')

モデルを訓練する

訓練設定を作成します
訓練するモデルに合わせて設定を作ります

  • 分類モデルを訓練する場合
    • ClassifierTrainingSettingsClassificationMetricsを使用
  • 回帰モデルを訓練する場合
    • RegressorTrainingSettingsRegressionMetricsを使用
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で完結して処理を行うことができます
是非、利用してみて下さい

以上

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。