把筆記本轉成腳本
當你用筆記本做實驗和開發時,首先需要把筆記本轉換成腳本。 或者,你也可以選擇跳過使用筆記本,只用腳本來操作。 無論哪一種方式,在建立可投入生產環境的指令碼時,都有一些建議可遵循。
腳本非常適合在生產環境中進行測試和自動化。 要製作一份可製作的腳本,你需要:
- 移除非必要的程式碼。
- 將代碼重構為函數。
- 在終端機測試你的腳本。
移除所有非必要的程式碼
使用筆記本的主要好處是能夠快速瀏覽你的資料。 例如,你可以使用 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 語句的輸出結果會顯示在終端機中。 任何可能的錯誤也會顯示在終端機中。