ノートブックをスクリプトに変換する
実験と開発にノートブックを使用した場合は、まずノートブックをスクリプトに変換する必要があります。 または、ノートブックの使用をスキップし、スクリプトのみを操作することもできます。 どちらの方法でも、運用環境に対応したコードを含むスクリプトを作成する場合は、いくつかの推奨事項があります。
スクリプトは、運用環境でのテストと自動化に最適です。 運用対応スクリプトを作成するには、次の操作を行う必要があります。
- 不要なコードを削除します。
- コードを関数にリファクタリングします。
- ターミナルでスクリプトをテストします。
不要なコードをすべて削除する
ノートブックを使用する主な利点は、データをすばやく探索できることです。 たとえば、 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ステートメントの出力がターミナルに表示されます。 発生する可能性のあるエラーもターミナルに表示されます。