將筆記本轉換成指令碼

已完成 100 XP

當您使用筆記本進行實驗和開發時,您必須先將筆記本轉換成指令碼。 或者,您也可以選擇略過使用筆記本,並只使用指令碼。 不論是哪一種方式,在建立指令碼以擁有生產環境就緒的程式碼時,有一些建議事項需要考慮。

指令碼很適合用於在實際執行環境中進行測試和自動化。 若要建立生產就緒指令碼,您必須:

  • 清除非必要的程式碼。
  • 將程式碼重構為函數。
  • 在終端中測試指令碼。

移除所有非必要的程式碼

使用筆記本的主要優點,是能夠快速探索您的資料。 例如,您可以使用 print()df.describe() 陳述式來探索資料和變數。 當您建立將用於自動化的指令碼時,建議您避免包含針對探勘目的所撰寫的程式碼。

因此,您需要做的第一件事,是將程式碼轉換成生產程式碼,以移除非必要程式碼。 特別是在定期執行程式碼時,您會想要避免執行任何非必要的項目,以降低成本和計算時間。

將程式碼重構為函數

在商務流程中使用程式碼時,您會希望程式碼更容易閱讀,讓任何人都得以維護程式碼。 讓程式碼更容易閱讀和測試的其中一個常見方法,是使用函數。

例如,您可能已在筆記本中使用下列範例程式碼來讀取和分割資料:

Python
# 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)

由於函式也可讓您測試程式碼的各個部分,因此建議您建立多個較小的函式,而不是一個大型函式。 如果您想要測試部分程式碼,您可以選擇只測試一小部分,並避免執行必要之外的程式碼。

您可以將範例中顯示的程式碼重構為兩個函數:

  • 讀取資料
  • 分割資料

重構程式碼的範例如下:

Python
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 陳述式。 不過,當您知道您不會在終端中檢閱指令碼的輸出時,最好移除任何沒有用途的程式碼。

測試指令碼

在實際執行環境中使用指令碼之前 (例如將指令碼與自動化管線整合),您會想要測試指令碼是否正常運作。

測試指令碼的其中一個簡單方式,是在終端中執行指令碼。 在 Azure Machine Learning 工作區中,您可以在計算執行個體的終端內快速執行指令碼。

當您在 Azure Machine Learning 工作室的 [筆記本] 頁面中開啟指令碼時,您可以選擇在終端內儲存並執行指令碼

或者,您可以直接瀏覽至計算執行個體的終端。 瀏覽至 [計算] 頁面,然後選取您想要使用的計算執行個體終端。 您可以使用下列命令來執行名為 train.py 的 Python 指令碼:

python train.py

陳述式的 print 輸出會顯示在終端中。 任何可能的錯誤也會出現在終端中。


下一個單元: 將指令碼當作命令作業執行

上一個 下一個