将笔记本转换为脚本
使用笔记本进行试验和开发时,首先需要将笔记本转换为脚本。 或者,您可以选择跳过使用笔记本,仅使用脚本。 无论哪种方式,创建脚本以生成生产就绪代码时,都有一些建议。
脚本非常适合在生产环境中进行测试和自动化。 若要创建生产就绪脚本,需要:
- 删除非必要代码。
- 将代码重构为函数。
- 在终端中测试脚本。
删除所有不必要的代码
使用笔记本的主要好处是能够快速浏览数据。 例如,可以使用 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 机器学习工作区中,可以在计算实例的终端中快速运行脚本。
在 Azure 机器学习工作室的 Notebooks 页中打开脚本时,可以选择 在终端中保存并运行脚本。
或者,可以直接导航到计算实例的终端。 导航到 “计算 ”页,然后选择要使用的计算实例的 终端 。 可以使用以下命令运行名为 train.py 的 Python 脚本:
python train.py
print语句的输出显示在终端中。 任何可能的错误也会显示在终端中。