把筆記本轉成腳本

已完成

當你用筆記本做實驗和開發時,首先需要把筆記本轉換成腳本。 或者,你也可以選擇跳過使用筆記本,只用腳本來操作。 無論哪一種方式,在建立可投入生產環境的指令碼時,都有一些建議可遵循。

腳本非常適合在生產環境中進行測試和自動化。 要製作一份可製作的腳本,你需要:

  • 移除非必要的程式碼。
  • 將代碼重構為函數。
  • 在終端機測試你的腳本。

移除所有非必要的程式碼

使用筆記本的主要好處是能夠快速瀏覽你的資料。 例如,你可以使用 print() 和 df.describe() 語句來探索你的資料和變數。 當你建立用於自動化的腳本時,你要避免包含為探索性而寫的程式碼。

因此,將程式碼轉換為生產代碼的第一件事是移除非必要的程式碼。 尤其是當你經常執行程式碼時,你會想避免執行任何非必要的操作,以降低成本和計算時間。

將程式碼重構成函式

在商業流程中使用程式碼時,你希望程式碼容易閱讀,讓任何人都能維護。 讓程式碼更易閱讀和測試的一個常見方法是使用函式。

舉例來說,想像你在筆記本中使用以下範例程式碼來讀取並分割資料:

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

由於函式也能測試程式碼的部分,你可能會偏好建立 多個較小的函式,而非一個大型函式。 如果你想測試程式碼的一部分,可以選擇只測試一小部分,避免執行過多程式碼。

你可以將範例中顯示的程式碼重構成兩個函式:

  • 閱讀數據
  • 分割資料

重構程式碼的範例如下:

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 Studio 的 筆記本 頁面開啟腳本時,可以選擇 儲存並在終端機執行該腳本。

或者,你也可以直接導覽到運算實例的終端機。 前往 計算 頁面,選擇你想使用的計算實例的 終端 機。 你可以使用以下指令執行一個名為 train.pyPython 的腳本:

python train.py

print 語句的輸出結果會顯示在終端機中。 任何可能的錯誤也會顯示在終端機中。