Python でパラメータを解析する 3 つの方法

王林
リリース: 2023-05-12 11:13:13
転載
1187 人が閲覧しました

Python 解析参数的三种方法

Let's go!

機械学習のパラメータ調整プロセスを練習に使用します。方法は 3 つあります。最初のオプションは、コマンド ライン解析専用の人気のある Python モジュールである argparse を使用することです。もう 1 つは、すべてのハイパーパラメータを配置できる JSON ファイルを読み取ることです。3 番目のオプションもあまり知られていません。解決策は、YAML ファイルを使用することです。興味があるなら、始めましょう!

前提条件

以下のコードでは、非常に効率的な統合 Python 開発環境である Visual Studio Code を使用します。このツールの利点は、拡張機能をインストールすることであらゆるプログラミング言語をサポートし、ターミナルを統合し、多数の Python スクリプトと Jupyter ノートブックを同時に操作できることです。

    #https://www.kaggle.com/datasets/lakshmi25npathi/bike-sharing-dataset
argparse を使用する

Python 解析参数的三种方法##上の図に示すように、小さなプロジェクトを整理するための標準構造があります。

データセットを含む data という名前のフォルダー
  • train.py ファイル#ハイパーパラメータを指定するための
  • ##options.py ファイル
  • まず、インポートされたデータ、トレーニング データが含まれるファイル train.py を作成できます。 モデルのトレーニングと評価の基本手順テスト セットでは次のようになります。
  • import pandas as pd
    import numpy as np
    from sklearn.ensemble import RandomForestRegressor
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    from sklearn.metrics import mean_squared_error, mean_absolute_error
    from options import train_options
    df = pd.read_csv('datahour.csv')
    print(df.head())
    opt = train_options()
    X=df.drop(['instant','dteday','atemp','casual','registered','cnt'],axis=1).values
    y =df['cnt'].values
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    if opt.normalize == True:
     scaler = StandardScaler()
     X = scaler.fit_transform(X)
    rf = RandomForestRegressor(n_estimators=opt.n_estimators,max_features=opt.max_features,max_depth=opt.max_depth)
    model = rf.fit(X_train,y_train)
    y_pred = model.predict(X_test)
    rmse = np.sqrt(mean_squared_error(y_pred, y_test))
    mae = mean_absolute_error(y_pred, y_test)
    print("rmse: ",rmse)
    print("mae: ",mae)
    ログイン後にコピー
コードでは、options.py ファイルに含まれる train_options 関数もインポートしました。後者のファイルは、train.py で考慮されるハイパーパラメータを変更できる Python ファイルです。

import argparse
def train_options():
 parser = argparse.ArgumentParser()
 parser.add_argument("--normalize", default=True, type=bool, help='maximum depth')
 parser.add_argument("--n_estimators", default=100, type=int, help='number of estimators')
 parser.add_argument("--max_features", default=6, type=int, help='maximum of features',)
 parser.add_argument("--max_depth", default=5, type=int,help='maximum depth')
 opt = parser.parse_args()
 return opt
ログイン後にコピー

この例では、コマンド ライン引数を解析するときに非常に人気のある argparse ライブラリを使用します。まず、パーサーを初期化してから、アクセスするパラメーターを追加します。

これはコードの実行例です:

python train.py
ログイン後にコピー

ハイパーパラメータのデフォルト値を変更するには、2 つの方法があります。最初のオプションは、options.py ファイルに異なるデフォルト値を設定することです。別のオプションは、コマンド ラインからハイパーパラメータ値を渡すことです。 Python 解析参数的三种方法

python train.py --n_estimators 200
ログイン後にコピー

変更するハイパーパラメータの名前と対応する値を指定する必要があります。

python train.py --n_estimators 200 --max_depth 7
ログイン後にコピー

JSON ファイルの使用

以前と同様に、同様のファイル構造を維持できます。この場合、options.py ファイルを JSON ファイルに置き換えます。つまり、JSON ファイルでハイパーパラメータの値を指定し、train.py ファイルに渡したいと考えます。 JSON ファイルは、キーと値のペアを利用してデータを保存するため、argparse ライブラリに代わる高速かつ直感的な代替手段となります。次に、後で他のコードに渡す必要があるデータを含む options.json ファイルを作成します。 Python 解析参数的三种方法

{
"normalize":true,
"n_estimators":100,
"max_features":6,
"max_depth":5
}
ログイン後にコピー

上でわかるように、これは Python 辞書に非常に似ています。ただし、辞書とは異なり、テキスト/文字列形式のデータが含まれています。さらに、構文が若干異なる一般的なデータ型がいくつかあります。たとえば、ブール値は false/true ですが、Python は False/True を認識します。 JSON で使用できるその他の値は配列であり、角かっこを使用して Python リストとして表されます。

Python で JSON データを操作する利点は、load メソッドを使用して Python 辞書に変換できることです:

f = open("options.json", "rb")
parameters = json.load(f)
ログイン後にコピー

特定の項目にアクセスするには、その項目内で引用符で囲むだけで済みます。角括弧 キー名:

if parameters["normalize"] == True:
 scaler = StandardScaler()
 X = scaler.fit_transform(X)
rf=RandomForestRegressor(n_estimators=parameters["n_estimators"],max_features=parameters["max_features"],max_depth=parameters["max_depth"],random_state=42)
model = rf.fit(X_train,y_train)
y_pred = model.predict(X_test)
ログイン後にコピー

YAML ファイルの使用

最後のオプションは、YAML の可能性を活用することです。 JSON ファイルと同様に、YAML ファイルを Python コードで辞書として読み取り、ハイパーパラメータの値にアクセスします。 YAML は人間が判読できるデータ表現言語であり、JSON ファイルのような括弧ではなくダブルスペース文字を使用して階層が表現されます。以下に、options.yaml ファイルの内容を示します。 Python 解析参数的三种方法

normalize: True
n_estimators: 100
max_features: 6
max_depth: 5
ログイン後にコピー

train.py で、options.yaml ファイルを開きます。このファイルは常に、load メソッドを使用して Python 辞書に変換されます。今回は、 yaml ライブラリ インポート先:

import yaml
f = open('options.yaml','rb')
parameters = yaml.load(f, Loader=yaml.FullLoader)
ログイン後にコピー
前と同様に、辞書に必要な構文を使用してハイパーパラメータの値にアクセスできます。

最終考察

設定ファイルは非常に高速にコンパイルされますが、argparse では追加する引数ごとに 1 行のコードを記述する必要があります。

したがって、さまざまな状況に応じて最適な方法を選択する必要があります。

たとえば、パラメータにコメントを追加する必要がある場合、JSON はコメントを許可しないため適していません。YAML は適していません。 argparse が適しているかもしれません。

以上がPython でパラメータを解析する 3 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!