Just KNIME It 第二季(2023)
特别感谢“晨曦”对以下中文内容的修订。
“Just KNIME It!”是什么?
“Just KNIME It!”(就用KNIME吧!)是 KNIME 官方提供的一系列和数据相关的挑战。你可以通过 KNIME 构建工作流来解决这些挑战,在此过程中你还可以向社区其他参与者学习。
- 每周三,KNIME 官方会出一个可以通过 KNIME 解答的 问题。
- 然后参与者会自己想出一个解决方法(随时可以利用KNIME的论坛参与讨论),并且用工作流的方式实现它。
- 在下一周的周二,KNIME 会把官方的解决方案分享出来。
- 因为每个挑战可以有很多解决方法,KNIME 官方鼓励你在 KNIME Hub 以及社交媒体上分享你的解答,共同为问题寻找最佳答案!
- 每个挑战都标注了的难度等级:简单,中等或者困难。
指北君小提示
虽然这一季活动已经过去了,但你可以随时通过挑选自己感兴趣的题目练习构建 KNIME 工作流,提高自己解决问题的能力。
在挑战时,可以先下载相关挑战的数据之后,自己进行尝试,如果没有成功,你可以借助“解决方案摘要”前进,如果还是没有成功,可以通过“工作流构建描述”了解构建工作流中使用了哪些节点,甚至下载官方答案或参考社区讨论进行学习。
在下面,指北君已帮你将题目翻译成了中文(感谢“晨曦”对中文内容的修订),并做好了相应提示的整理,对于社区讨论(英文),可以通过使用浏览器的翻译功能进行查看。
你现在只需要 -- Just KNIME It
关于挑战的数据和答案
每一个挑战的数据都可以在这个链接中 找到并下载。
也可以通过指北君为你准备的百度网盘(链接: https://pan.baidu.com/s/1XSnesg63-wsqNLQqPg9OUA?pwd=genv 提取码: genv )或 微软OneDrive 统一下载所有数据和参考答案,导入 KNIME 进行学习。(导入流程类似《KNIME 视觉化数据分析》学习资料导入过程)
注:参考工作流中如果发现数据不能成功读取的情况,那么有可能是数据文件路径的问题,需要使用者手动更改数据文件路径,或者复制数据文件到工作流中指定的数据目录中。
挑战01:比对各国的汇率 - 难度:简单
你现在投身于研究和交易各国货币,工作职责之一是对比从 1980 年至 1998 年间美元与其他八种货币的日常汇率。由于周末或假期的存在,数据中存在一些缺失项,需要你针对此情况选择合适的方式进行处理。然后,你需要计算各种货币之间的汇率关联度,并将其结果进行可视化。最后回答以下问题:哪种货币的正/负相关性最大?哪些货币之间并未发现显著的关联,或者说关联性较弱?
解决方案摘要
在读取包含有日常汇率数据的数据集之后,我们采取了一个简单的策略,即用前一日期的数据来替代缺失的数据。然后,我们利用皮尔逊系数计算了所有货币对之间的线性相关性,并用热力图进行了可视化。正相关性最高的是瑞士货币、德国货币和荷兰货币,而最高的负相关性是澳大利亚货币和日本货币。相关性接近零的是加拿大货币与荷兰/德国货币。
工作流构建描述
我们首先通过表读取器(Table Reader)节点读取含有日常汇率的数据集。接下来,我们利用缺失值(Missing Value)节点,将每一个缺失的值替换为之前的一个非缺失值,然后通过线性相关性节点(Linear Correlation)计算各种货币对之间的皮尔逊相关性。最后,我们利用热力图节点(Heatmap)以一种互动的方式来展示这些相关性。
挑战02:信用卡客户的分群 - 难度:中等
信用卡 ABC 公司积累了大量关于客户购买与支付的信息,以付款详情与购买详情的形式展现。公司计划将客户分成三个类别,如此一来,就可以根据每个类别的特征来设计市场宣传活动。你的任务就是依据以上信息,建立一个聚类模型来合理划分客户群体。同一类别中的客户有哪些共同特征?另外,还有一些新注册的客户信息,你需要利用已训练好的聚类模型,为新注册客户设定类别标签,并将结果导出成 CSV 文件。最后回答如下问题:关于用户类别划分结果,应如何评价其质量?
解决方案摘要
为了应对这个挑战,首先我们将数据分为现有用户和新注册用户两类。接下来,对现有用户的数据进行预处理,针对缺失数据进行处理并进行标准化以便于后续的聚类操作。接着我们利用 k-means 算法对这些数据进行聚类,簇数选择 3(k=3),并通过计算轮廓系数( Silhouette )来评估聚类效果(系数越接近1,表明聚类结果越好)。我们还利用散点图对分好的群体进行了视觉化展示。最后,我们将分类模型应用到新注册的用户上,并进行分组。
聚类算法对于将用户的消费习惯分类很有帮助,比如发现消费能力差的用户(Cluster_1,消费力和购买力都较低的用户);潜 力用户(Cluster_0,消费力较强但购买力较弱的用户);还有高消费者(Cluster_2,消费力和购买力都很强的用户)。可以根据这些不同的消费群体来制定市场营销活动,以提升收入。
工作流构建描述
我们首先通过分区节点(Partitioning)将数据分为现有用户和新注册用户。接下来,我们使用“缺失值”(Missing Value)和“标准化”(Normalizer)结点对已存在用户的数据进行预处理,并创立模型以便清理新用户数据(使用"缺失值应用"Missing Value (Apply)和"标准化应用 "Normalizer (Apply)结点)。在对现有用户的预处理数据进行 k-means 节点聚类后,我们使用“反标准化” Denormalizer 节点并使用“颜色管理” Color Manager 和“散点图” Scatter Plot 节点将其视觉化。同时,我们还利用“轮廓系数” Silhouette Coefficient 节点对利用 k-means 算法划分出的聚类质量进行评价。由于质量良好,我们将划分出的类别ID分配给通过预处理之后的新用户数据上(使用“聚类分配器” Cluster Assigner 节点)。最后我们对这些数据进行反标准化(“反标准化” Denormalizer 节点),并将数据及其类别 ID 一起写入 CSV 文件中(CSV Writer 节点)。