模型选择
正则化和交叉验证都是进行模型选择的有力工具。正则化可以帮助防止过拟合,而交叉验证可以确保对模型进行恰当评估。在本练习中,您将把正则化与交叉验证结合起来,看看模型之间是否存在显著差异。这里您只计算精确率,不过也可以用同样的方法计算召回率和其他评估指标。
X_train、y_train、X_test、y_test 已在您的工作区中可用。pandas 作为 pd、numpy 作为 np,以及 sklearn 也都可用。来自 sklearn.metrics 的 precision_score() 和 recall_score(),以及来自 sklearn.model_selection 的 KFold() 与 cross_val_score() 均已提供。
本练习是课程的一部分
用 Python 预测 CTR 的机器学习实战
练习说明
- 使用
n_splits设置 4 折的 K 折交叉验证,并将其赋给k-fold。 - 创建一个决策树分类器。
- 使用
k_fold运行交叉验证,并在给定的max_depth值下评估您的决策树模型的精确率与召回率。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Iterate over different levels of max depth and set up k-fold
for max_depth_val in [3, 5, 10]:
k_fold = ____(____ = 4, random_state = 0, shuffle = True)
clf = ____(____ = max_depth_val)
print("Evaluating Decision Tree for max_depth = %s" %(max_depth_val))
y_pred = clf.fit(____, ____).predict(____)
# Calculate precision for cross validation and test
cv_precision = ____(
____, X_train, y_train, cv = k_fold, scoring = 'precision_weighted')
precision = ____(y_test, y_pred, average = 'weighted')
print("Cross validation Precision: %s" %(cv_precision))
print("Test Precision: %s" %(precision))