ノートブックをスクリプトに変換する

完了

実験と開発にノートブックを使用した場合は、まずノートブックをスクリプトに変換する必要があります。 または、ノートブックの使用をスキップし、スクリプトのみを操作することもできます。 どちらの方法でも、運用対応コードを使用するスクリプトを作成する場合は、いくつかの推奨事項があります。

スクリプトは、運用環境でのテストと自動化に最適です。 運用対応スクリプトを作成するには、次のことを行う必要があります。

  • 不要なコードを削除する。
  • コードを関数にリファクタリングする。
  • ターミナルでスクリプトをテストする。

不要なコードをすべて削除する

ノートブックを使用する主な利点は、データをすばやく探索できることです。 たとえば、print()df.describe() ステートメントを使用して、データと変数を探索できます。 自動化に使用されるスクリプトを作成するときは、探索目的で記述されたコードを含めないようにする必要があります。

そのため、コードを運用コードに変換するために最初に行う必要があるのは、不要なコードを削除することです。 特に、コードを定期的に実行する場合は、コストとコンピューティング時間を減らすために、不要なことを行わないようにする必要があります。

コードを関数にリファクタリングする

ビジネス プロセスでコードを使用する場合は、コードを読みやすくして、誰でも維持できるようにする必要があります。 コードの読み取りとテストを容易にする一般的な方法の 1 つは、関数を使用することです。

たとえば、ノートブックで次のコード例を使用して、データの読み取りと分割を行ったとします。

# read and visualize the data
print("Reading data...")
df = pd.read_csv('diabetes.csv')
df.head()

# split data
print("Splitting data...")
X, y = df[['Pregnancies','PlasmaGlucose','DiastolicBloodPressure','TricepsThickness','SerumInsulin','BMI','DiabetesPedigree','Age']].values, df['Diabetic'].values

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)

関数を使用するとコードの一部をテストできるため、1 つの大きな関数ではなく、''複数の小さな関数''を作成することをお勧めします。 コードの一部をテストする場合は、小さな部分のみをテストし、必要以上に多くのコードを実行しないようにすることができます。

例に示すコードを 2 つの関数にリファクタリングできます。

  • データを読み取る
  • データを分割する

リファクタリングされたコードの例を次に示します。

def main(csv_file):
    # read data
    df = get_data(csv_file)

    # split data
    X_train, X_test, y_train, y_test = split_data(df)

# function that reads the data
def get_data(path):
    df = pd.read_csv(path)
    
    return df

# function that splits the data
def split_data(df):
    X, y = df[['Pregnancies','PlasmaGlucose','DiastolicBloodPressure','TricepsThickness',
    'SerumInsulin','BMI','DiabetesPedigree','Age']].values, df['Diabetic'].values

    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)

    return X_train, X_test, y_train, y_test

リファクタリングされたコードでも不要なコードが省略されていることにお気付きかもしれません。 スクリプトの出力を確認し、すべてのコードが期待どおりに実行されていることを確かめる場合は、運用コードで print ステートメントを使用することもできます。 しかし、ターミナルでスクリプトの出力を確認しないことがわかっている場合は、目的のないコードを削除することをお勧めします。

スクリプトをテストする

運用環境でスクリプトを使用する (たとえば、それらを自動化パイプラインと統合する) 前に、スクリプトが期待どおりに動作するかどうかをテストする必要があります。

スクリプトをテストする簡単な方法の 1 つは、ターミナルでスクリプトを実行することです。 Azure Machine Learning ワークスペース内では、コンピューティング インスタンスのターミナルでスクリプトをすばやく実行できます。

Azure Machine Learning Studio の [Notebooks ] ページでスクリプトを開くと、 ターミナルでスクリプトを保存して実行することを選択できます。

または、コンピューティング インスタンスのターミナルに直接移動することもできます。 [コンピューティング] ページに移動し、使用するコンピューティング インスタンスのターミナルを選択します。 次のコマンドを使用して、train.py という名前の Python スクリプトを実行できます。

python train.py

print ステートメントの出力はターミナルに表示されます。 考えられるエラーもターミナルに示されます。