ホームページ  >  記事  >  バックエンド開発  >  Pythonでパラメータを解析する3つの方法を詳しく解説

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

WBOY
WBOY転載
2022-07-20 14:22:223038ブラウズ

この記事では、Python に関する関連知識を提供します。主に、パラメーターを解析する 3 つの方法に関連する問題をまとめています。最初のオプションは、コマンド ラインに特に使用される、人気のある Python モジュールである argparse を使用することです。解析; もう 1 つの方法は、すべてのハイパーパラメータを配置できる JSON ファイルを読み取ることです。3 番目のあまり知られていない方法は、YAML ファイルを使用することです。一緒に見てみましょう。役立つことを願っています。全員が役に立ちます。

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

[関連する推奨事項: Python3 ビデオ チュートリアル ]

今日共有する内容の主な目的は、コマンド ラインとコード効率を向上させるための設定ファイル

それでは、いきましょう!

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

前提条件

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

データセットを操作できることです

#argparse の使用

Pythonでパラメータを解析する3つの方法を詳しく解説 上の図に示すように、小さなプロジェクトを整理するための標準構造があります。

    データが含まれます フォルダーを設定します名前付きの 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('data\hour.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

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

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

python train.py --n_estimators 200 --max_depth 7
JSON ファイルの使用

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

{
"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 ファイルの使用

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

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 が適しているかもしれません。

【関連する推奨事項: Python3 ビデオ チュートリアル ]

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

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。