网站建设 搞笑笑话,慈溪市规划建设网站,wordpress主题里文章添加留言板,动漫设计与制作设计课程摘要#xff1a;本文介绍了如何在Kaggle平台上使用TensorFlow决策森林库快速构建树基模型。针对表格数据问题#xff0c;决策森林通常优于神经网络且实现更简单。教程以汽车评级数据集为例#xff0c;展示了从安装库、数据导入到模型训练的全过程#xff0c;仅需数行代码即…摘要本文介绍了如何在Kaggle平台上使用TensorFlow决策森林库快速构建树基模型。针对表格数据问题决策森林通常优于神经网络且实现更简单。教程以汽车评级数据集为例展示了从安装库、数据导入到模型训练的全过程仅需数行代码即可达到95%准确率。相比神经网络决策森林具有数据预处理简单、计算资源需求低和模型可解释性强等优势特别适合快速原型开发和业务场景解释。目录仅需数行代码用 TensorFlow 训练树基模型数据预处理更简便模型可解释性更强决策树 VS 神经网络仅需数行代码用 TensorFlow 训练树基模型Kaggle 已成为数据科学爱好者锤炼技能、参与机器学习建模竞赛的首选平台。本教程将手把手带大家入门如何在 Kaggle 笔记本中使用 TensorFlow 决策森林库 —— 这一库能让你在 TensorFlow 框架中轻松训练随机森林、梯度提升树等树基模型。为何要关注决策森林Kaggle 竞赛的题型大致可分为两类而夺冠方案究竟是选择神经网络还是决策森林核心取决于你处理的数据类型。如果面对的是表格数据类问题这类问题需要训练模型对电子表格中的数据进行分类是极为常见的场景夺冠方案往往是决策森林但如果是感知类问题比如教计算机实现视觉或听觉识别如图像分类最优模型则通常是神经网络。好消息是在 TensorFlow 中实现决策森林模型仅需数行代码而且在 Kaggle 的诸多问题中这个看似简单的模型表现往往优于神经网络。本文将结合 Kaggle 的一个简单数据集带大家探索这款决策森林库的使用方法同时借助 Kaggle Kernels 搭建模型 —— 该平台能让你利用免费的云端计算资源在线完成模型的全流程搭建与训练功能与 Colab 类似。本次使用的数据集包含汽车的价格、车门数、载客量、保养成本等信息我们将基于这些特征对汽车进行评级。首先你可以通过 Kaggle 账号访问 Kaggle Kernels若还未注册需先完成账号注册。进入 Kaggle 主页后点击左侧菜单栏的「代码」选项再选择「新建笔记本」即可打开一个全新的 Kaggle Kernels 工作环境。打开新的笔记本后先将汽车评级数据集导入工作环境点击笔记本右上角附近的「添加数据」按钮搜索「car evaluation」汽车评级选中并添加该数据集即可。至此我们就可以开始编写代码了。首先安装 TensorFlow 决策森林库并导入所需的相关依赖代码如下。本文中的代码均来自《使用 TensorFlow 决策森林构建、训练和评估模型》官方教程该教程中还有更多案例可供参考。plaintext!pip install tensorflow_decision_forests import numpy as np import pandas as pd import tensorflow_decision_forests as tfdf接下来导入数据集。需要注意的是我们下载的这个数据集本身没有列名因此要先根据 Kaggle 数据集页面的说明为其添加列名。在处理数据集前建议用你常用的文本或电子表格编辑器打开数据集进行检查这是一个良好的操作习惯。plaintextdf pandas.read_csv(../input/car-evaluation-data-set/car_evaluation.csv) col_names [购车价格, 保养价格, 车门数, 载客量, 后备箱空间, 安全等级, 汽车评级] df.columns col_names df.head()随后将数据集划分为训练集和测试集plaintextdef split_dataset(dataset, test_ratio0.30): test_indices np.random.rand(len(dataset)) test_ratio return dataset[~test_indices], dataset[test_indices] train_ds_pd, test_ds_pd split_dataset(df) print(训练集样本数{}测试集样本数{}。.format( len(train_ds_pd), len(test_ds_pd)))最后将数据集转换为 tf.data 格式 —— 这是 TensorFlow 专用的高性能数据格式能让模型训练更高效。而借助 TensorFlow 决策森林库仅需一行代码就能完成格式转换plaintexttrain_ds tfdf.keras.pd_dataframe_to_tf_dataset(train_ds_pd, label汽车评级) test_ds tfdf.keras.pd_dataframe_to_tf_dataset(test_ds_pd, label汽车评级)现在执行以下代码就能立刻开始训练模型plaintextmodel tfdf.keras.RandomForestModel() model.fit(train_ds)该库内置了优质的默认参数配置对于大多数问题直接使用默认参数就能取得不错的效果。针对高级用户库的 API 文档中提供了大量可配置选项可对随机森林模型进行个性化调优。模型训练完成后就能验证其在测试集上的表现plaintextmodel.compile(metrics[accuracy]) print(model.evaluate(test_ds))仅通过数行代码我们就在这个小型数据集上实现了95% 以上的准确率有人可能会说这个数据集比较简单神经网络也能取得亮眼的结果 —— 诚然如此尤其是在处理超大规模数据集比如数十万甚至更多样本时神经网络的优势会更明显。但问题在于搭建神经网络需要编写更多代码而且对计算资源要求极高需要更强的算力支撑。数据预处理更简便决策森林还有一个重要优势数据预处理的步骤大幅减少。从上述代码中能看到我们可以直接将包含分类特征和数值特征的原始数据集传入决策森林模型无需进行数值归一化、字符串转整数、独热编码等任何预处理操作。这一特性带来了两大好处一方面让决策森林的使用更简单能快速完成模型训练另一方面减少了代码量也降低了代码出错的概率。下文将为大家梳理决策森林与神经网络这两种技术的其他关键差异。模型可解释性更强决策森林的另一大显著优势是可解释性强。尽管决策树的建模流程与神经网络相去甚远但在特定任务中选择这类模型能获得诸多优势。这是因为借助决策森林决策树的集成模型我们能极其直观地确定特征的重要性。值得一提的是TensorFlow 决策森林库的模型绘图功能还能将特征重要性可视化呈现具体用法如下plaintexttfdf.model_plotter.plot_model_in_colab(model, tree_idx0)从生成的决策树可视化图中可以看到左侧的根节点标注了总样本数1728 个不同颜色则代表了样本的评级分布。本模型首先以汽车的载客量作为核心判断特征图中绿色的最大分支代表载客量为 2 人红色分支代表载客量为 4 人。顺着决策树向下查看还能清晰看到树的各个分裂节点以及每个节点对应的样本数量。模型会根据节点的判断条件将样本划分至两个分支中。有趣的是我们还能通过分析某个特征在所有分裂节点中的作用计算该特征降低数据方差的程度从而精准判定其重要性。决策树 VS 神经网络神经网络无疑拥有强大的表征学习能力但即便其性能出众我们也需要思考它是否是解决当前问题的最佳工具。搭建神经网络时需要精心设计网络的每一层结构而决策森林则可以开箱即用当然高级用户也能对各类参数进行调优。在逐层搭建神经网络之前绝大多数情况下都需要先进行特征预处理比如将特征归一化至均值为 0、标准差为 1 的范围或是将字符串类型的特征转换为数值型。而树基模型原生支持混合类型数据能直接跳过这一初始步骤。从上述代码实操中能看到我们仅通过几个简单步骤就得到了模型结果。得到目标评估指标后还需要结合具体业务场景解读指标含义。而决策树最突出的优势之一正是其极强的可解释性从上述代码生成的决策树可视化图中我们能从根节点出发顺着各个分支清晰追溯模型的决策逻辑。反观神经网络更像是一个 “黑箱”不仅难以解读其决策过程也很难向非技术背景的受众解释模型原理。