將筆記本轉換成指令碼
當您使用筆記本進行實驗和開發時,您必須先將筆記本轉換成指令碼。 或者,您也可以選擇略過使用筆記本,並只使用指令碼。 不論是哪一種方式,在建立指令碼以擁有生產環境就緒的程式碼時,有一些建議事項需要考慮。
指令碼很適合用於在實際執行環境中進行測試和自動化。 若要建立生產就緒指令碼,您必須:
- 清除非必要的程式碼。
- 將程式碼重構為函數。
- 在終端中測試指令碼。
移除所有非必要的程式碼
使用筆記本的主要優點,是能夠快速探索您的資料。 例如,您可以使用 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 工作室的 [筆記本] 頁面中開啟指令碼時,您可以選擇在終端內儲存並執行指令碼。
或者,您可以直接瀏覽至計算執行個體的終端。 瀏覽至 [計算] 頁面,然後選取您想要使用的計算執行個體終端。 您可以使用下列命令來執行名為 train.py
的 Python 指令碼:
python train.py
陳述式的 print
輸出會顯示在終端中。 任何可能的錯誤也會出現在終端中。