尽管本次实验不涉及 CDF 组件,但我们已将其用于解释其他实验中使用的 CDSW 模型端点是如何实现的。
在本次实验中,您将在 CDSW 中运行实验,选择产生最佳实验结果的模型并将该模型部署到生产环境中。
在本实验和接下来的实验中,您将戴上数据科学家的帽子。您将编写模型代码,对其进行多次训练,最后将模型部署到生产环境。整个实验全部在30分钟内完成!
HADOOP_CONF_DIR=/etc/hadoop/conf/
修改Docker的PIP安装默认源路径,在CDSW Project的页面打开_Terminal Access:
在Terminal中执行下面的命令:
cat > ~/.pip/pip.conf <<EOF
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
EOF
然后再执行pip的安装等,速度就快了很多。执行完之后就可以关掉该终端了。
在/home/cdsw下做的修改,都会持久化存储和使用。
!pip3 install --upgrade pip scikit-learn pandas
!hdfs dfs -put -f data/historical_iot.txt /user/$HADOOP_USER_NAME
pip3 install --upgrade pip scikit-learn pandas
打开文件cdsw.iot_exp.py。这是一个 python 程序,它构建一个模型来预测机器故障(这台机器发生故障的可能性)。hdfs 上有一个包含客户数据的数据集,包括故障指示器字段。
该程序将使用随机森林算法构建故障预测模型。随机森林是决策树的集合。随机森林是用于分类和回归的最成功的机器学习模型之一。它们结合了许多决策树以降低过度拟合的风险。与决策树一样,随机森林处理分类特征,扩展到多类分类设置,不需要特征缩放,并且能够捕获非线性和特征交互。
spark.mllib支持随机森林进行二元和多类分类以及回归,同时使用连续和分类特征。spark.mllib使用现有的决策树实现来实现随机森林。有关树的更多信息,请参阅决策树指南。
随机森林算法需要几个参数:
增加树的数量将减少预测的方差,提高模型的测试时间准确性。训练时间在树的数量上大致呈线性增长。
增加深度使模型更具表现力和功能。然而,深度树需要更长的时间来训练,也更容易过度拟合。一般来说,与使用单个决策树相比,使用随机森林训练更深的树是可以接受的。一棵树比随机森林更容易过度拟合(因为对森林中的多棵树进行平均会降低方差)。
在cdsw.iot_exp.py程序中,这些参数可以在运行时传递给程序,传递给这些python变量:
param_numTrees = int(sys.argv[1])
param_maxDepth = int(sys.argv[2])
另请注意,随机森林模型的质量指标被写回到 Data Science Workbench 存储库:
cdsw.track_metric("auroc", auroc)
cdsw.track_metric("ap", ap)
这些指标稍后将显示在“Experiments”仪表盘中。
nnumTrees = 20 numDepth = 20
NumTrees NumDepth
15 25
25 20
第 1 步:检查程序cdsw.iot_model.py
该程序还包含predict定义,它是调用模型的函数,将特征作为参数传递,并将返回结果变量。
predict({"feature": "0, 65, 0, 137, 21.95, 83, 19.42, 111, 9.4, 6, 3.43, 4"})
Name: IoT Prediction Model
Description: IoT Prediction Model
File: cdsw.iot_model.py
Function: predict
Example Input: {"feature": "0, 65, 0, 137, 21.95, 83, 19.42, 111, 9.4, 6, 3.43, 4"}
Kernel: Python 3
Engine: 1 vCPU / 4 GB Memory
Replicas: 1
因为模型启用了API Key认证,因此上述执行会报错。
将生成的API Key和KeyID复制保存,用于后续使用。待退出该页面后,API Key将无法再获取。
{
"feature": "0, 95, 0, 88, 26.62, 75, 21.05, 115, 8.65, 5, 3.32, 3"
}