哈喽大家好!还在盯着密密麻麻的考勤Excel表,一行行数谁迟到最多、谁没穿校服吗?传统的“人肉盯盘”不仅费眼,还找不出背后的规律。

今天,我们将用机器学习里的 K-Means 聚类算法,让 AI 自己去给学生打标签、做画像!重点是:全程零代码!点点鼠标就能完成全链路数据分析! 废话不多说,系好安全带,我们直接发车!🚀

🛠️ 课前小贴士:本次实验的神仙平台

在动手之前,先给大家安利一下这次实验的“主战车”——

  • 平台全称: 助睿数智(Uniplore)一站式数据科学实验平台

  • 平台定位: 主打一个“全链路 Agentic 零代码”,从数据接入、ETL清洗、AI建模到BI可视化,全包圆了!

  • 产品官网: https://www.uniplore.com/

  • 实验平台地址: https://lab.guilian.cn/

第一部分:实验背景与大盘逻辑

1.1 我们要做什么?(实验目的)

简单来说,就是基于一份现成的“学生考勤统计表”,把里面记录的迟到、早退、请假、校服违规次数等数据丢给 K-Means 算法。让 AI 自动把学生分成几个群(比如:乖宝宝型、偶尔摸鱼型、刺头型),最后生成考勤画像,再存回数据库里,为后续的校园学生精细化管理提供精准的数据支撑。

1.2 手里有什么牌?(实验数据大揭秘)

这次我们不搞假数据,直接上硬核的业务宽表。我们前置准备好了一张干净、标准化的学生考勤主题标签表(student_attendance_stats,存放在团队私有的 MySQL 数据库中。

这张表里包含了 16 个字段,不仅有学生的“身份底牌”,还有他们的“行为战绩”:

  • 基础信息(离散属性): 比如 student_id(学号)、gender(性别)、grade(年级)、is_boarder(是否住校)等。

  • 考勤行为指标(连续型变量): 包括 late_count(迟到次数)、early_leave_count(早退次数)、leave_count(请假次数)、uniform_violate_count(没穿校服次数)。

1.3 建模思路大公开(为什么这么干?)

在把数据喂给 AI 之前,咱们得先盘盘逻辑,这也是数据分析师最核心的内功:

  1. 拒绝花里胡哨,直击核心维度: 数据维度很清晰,我们不需要搞复杂的降维操作。直接锁定“迟到、早退、请假、没穿校服”这 4 类行为。这四个指标之间相关性低、业务含义独立,丢进 K-Means 跑出来的结果解释性最强。

  2. 数据类型天然契合 K-Means: 考勤次数都是非负整数,属于纯纯的“连续型变量”。这意味着什么?意味着我们根本不需要做哑变量编码、二值化这些繁琐的预处理!直接原汁原味输入模型,稳得一批。

  3. 基础属性只围观,不参战: 敲黑板!像性别、年级这种“分类标签”是不参与聚类计算的(防止干扰模型距离计算),它们只作为辅助特征,等模型把人群分好类之后,再拿来做画像解释。

🧠 干货小课堂:为什么选 K-Means?

K-Means(K均值)属于机器学习中的无监督学习(Unsupervised Learning)算法。它的强大之处在于“不需要人工提前打标”(即不需要事先告诉机器谁是好学生)。它通过计算数据点在多维空间中的欧氏距离(Euclidean Distance),自动把特征相似的数据“聚”成一堆(即“物以类聚”)。这种算法特别适合用来做冷启动阶段的用户画像分群、RFM模型客户分层等场景。

1.4 一图看懂全流程

别被什么 ETL、BI、机器学习吓到,其实整个逻辑非常顺滑。我画了一张流程图,大家瞄一眼就能 get 到核心路径:

第二部分:实操步骤(手把手跟着做)

接下来的步骤大家可以直接“抄作业”,我会把细节全部拉满!

阶段一:AI Studio 聚类建模(让机器干活)

1. 新建工作流:开辟我们的主战场

  • 操作说明: 登录平台后,直奔左侧菜单的“人工智能”(AI Studio 用户空间)。点左上角的“+”号,豪气地选择“新建工作流”。

2. 数据导入与特征选择(敲黑板,重点来了!)

  • 操作说明: 在左侧搜“数据库加载”,把它硬核拖拽到画布里。双击它,连上你们团队的 MySQL 数据库。

  • 配置要点:

    • 下拉选中我们的主角表 student_attendance_stats

    • 划重点: 我们只关心“异常行为”和“身份ID”,所以需要过滤字段!把 student_idclass_id 选为 categorical(类别型),把迟到、早退、请假、校服违规四个次数选为 numeric(连续型),剩下的姓名、性别什么的通通选 skip(跳过),别让冗余数据干扰 AI。

💡 避坑干货:K-Means 的“距离陷阱”

为什么连 student_id(学号)这种数字也要排除在计算之外(设为类别或跳过)?因为 K-Means 是算“距离”的。如果把学号强行当作连续数值参与建模,算法会觉得学号“1号”和“1000号”之间的物理距离非常远,从而误判他们差异极大。切记:凡是没有大小递进和量化关系的数据(如ID、手机号、分类代码),绝对不能作为连续型变量放进基于距离的聚类算法中!

  • 搞定后右键点击“运行该控件”,看看数据进来了没。 运行成功后可右键点击“查看输出结果”

3. 拖拽出 K-Means 算法组件

  • 操作说明: 继续在左边搜索“K-Means”,拖出来,跟前面的数据库组件拉一条线连起来。

  • 配置要点: 双击“K-Means”,我们今天就想把学生分成 3 拨人,所以把簇数量直接写死为 3,其他高深参数保持默认。右键运行!跑完你就会发现,系统给每个学生打上了 C1、C2 或 C3 的神秘编号。

    🧠 深度干货:K值(簇数量)怎么定才最科学?

    教程里为了直奔主题直接写死了 K=3。但在真实的商业分析中,如果你不知道把用户分几类最合适,业界通用的做法是结合“手肘法(Elbow Method)”“轮廓系数(Silhouette Coefficient)”。

    • 手肘法: 看误差平方和(SSE)随K值的折线图,找到图形拐点(像胳膊肘一样的地方),通常就是最优K值。

    • 轮廓系数: 衡量聚类的紧密度和分离度,值介于 [-1, 1] 之间,越接近1说明同类越紧密、异类越分明,聚类效果越好。

4. 结果入库保存

  • 操作说明: 拖一个“数据入库”组件连在后面。

  • 配置要点: 配置好数据库参数,选择“新建数据表”,名字就叫 student_cluster然后去画布顶端点大大的“运行”,看着绿勾勾一个个亮起,简直神清气爽。

阶段二:助睿 BI 探索分析(给 C1/C2/C3 赋予灵魂)

光有 C1/C2/C3 没用啊,得知道它们到底代表啥样的学生。这时候就需要 BI 平台出马了。

1. 连接数据源与构建数据集

  • 操作说明: 切换到左侧菜单的“助睿 BI”模块。先去建个 MySQL 数据连接,搞定后进入“数据集”新建一个。点击新建的数据库目录,可以看到本次实验所用的学生考勤主题标签表新建数据集数据源的第一个选项选择我们刚刚新建的数据源,第二个选项则选择student_cluster 所在的目录

  • 配置要点: 把我们刚生成的 student_cluster 表拖进画布。为了后续图表好看,务必把字段名改成中文(比如 late_count 改为“迟到次数”)。接着点右上角“保存并发布”!

2. 制作散点图探索器(视觉冲击力极强)

  • 操作说明: 为了方便管理,我们将本次制作的工作表集中存放在一个目录下,点击左上角的“+” - “新建分组”右键新建一个叫“迟到早退次数的聚类簇分析”的表图表类型果断选“探索器”。

  • 配置要点(防坑警告⚠️):

    • X轴放“迟到次数”,Y轴放“早退次数”。

    • 点击图形设置,颜色选“Cluster(聚类簇编号)”信息选“student_id(学生ID,设为维度)”

    • 高能预警: 系统默认最多展示 2000 条数据,一定要去右下角把限额改成 100%,不然数据看不全!

    • 颜色尽量选个反差大的主题。

📊 洞察干货:为什么用“散点图”来解释聚类?

散点图(Scatter Plot)是解释 K-Means 结果最完美的图表语言。K-Means 的核心是寻找高维空间中的“质心”,而在二维散点图中,我们可以用 X轴/Y轴 观察任意两个维度的交叉情况,直观地看到每个簇(Cluster)的分布密度边界。如果图上不同颜色的点泾渭分明,说明聚类效果极佳;如果全部糊成一团,说明你选的指标没有区分度。

  • 点击保存按钮,保存并发布工作表
  • 照葫芦画瓢,把四个异常指标两两组合,总共做出 6 张图。
    • 迟到与请假次数的聚类簇分析
    • 迟到与没穿校服次数的聚类簇分析
    • 早退与请假次数的聚类簇分析
    • 早退与没穿校服次数的聚类簇分析
    • 请假与没穿校服次数的聚类簇分析

3. 组装“高大上”的仪表盘

  • 操作说明: 去“仪表盘”菜单新建一个仪表盘,名字输入“草木本心-聚类簇分析”,备注信息输入“聚类簇分析”,点击“确认”拖个文本组件当标题,并设置字体颜色、字体大小、加粗、居中组件右下角可以拖动跳转组件大小,调整为下图的样式:然后把刚才做的 6 张图一股脑拖进来排好版点击图钉钉死位置。最终效果如下,老板看了都得给你加鸡腿!最后别忘了点击保存按钮,保存并发布仪表盘

阶段三:助睿 ETL 回写画像标签(闭环才是王道)

业务含义我们搞清楚了,最后一步,用 ETL 把这些标签写回原始数据库里!

⚙️ 架构干货:数据分析的尽头是 ETL 闭环

ETL(Extract-Transform-Load,即抽取、转换、加载)是现代数据工程的基石。很多初级数据分析师只负责在 Notebook 里跑算法,产出一堆图表或 CSV 就宣告结束。但真正有商业价值的分析,必须把产出的高价值标签(如这里的画像归属)打通(Load)回业务系统的数据库中,这就是所谓的“数据闭环”。没有这一步,你的标签就永远无法被其他业务系统调用!

1. 数据库新增扩展字段

  • 操作说明: 去“数据集成”(助睿 ETL)新建转换流,拖入“执行一个SQL脚本”组件。

  • 配置要点: 输入 SQL 语句,给原表 student_attendance_stats 加两个空槽位:clusterattendance_group

  • -- 为学生考勤统计表添加聚类结果字段
    ALTER TABLE student_attendance_stats
    ADD COLUMN cluster VARCHAR(10) NULL DEFAULT NULL COMMENT '聚类簇编号',
    ADD COLUMN attendance_group VARCHAR(30) NULL DEFAULT NULL COMMENT '考勤群体分类';

    执行转换流

2. 获取结果并进行字段类型转换

  • 操作说明: 另建一个转换流,用“表输入”查出 student_cluster连上“字段选择”组件。

  • 配置要点: 删掉无用字段student_id 、class_id 和 Cluster重点来了:为了保持和 student_attendance_stats 表中字段类型一致,不影响后续数据更新到 student_attendance_stats,需要将 student_id、class_id 的类型修改为Integer,点击元数据选项,插入2行, student_id、class_id 的配置如下:​​​​​​

3. 值映射与最终更新

  • 操作说明: 拖入“值映射”组件给标签贴中文名,最后接上“更新”组件写回数据库。

  • 配置要点:

    • 值映射: 映射字段填 Cluster,目标字段填 attendance_group。源值输入 C1、C2、C3,目标值根据图表规律映射(比如我这里 C1 是轻微波动,C2 是模范,C3 是高危,具体看大家跑出来的散点图哦!)。

    • 更新: 目标表选 student_attendance_stats。查询关键字是 student_id 匹配,把流里的数据塞给表里的新字段。跑起来!

第三部分:实验结果

行云流水一番操作后,来看看我们的战果:

1. 人人都能看懂的聚类画像(BI洞察结果) 基于那 6 张炫酷的散点图,三类人群彻底原形毕露:

神秘代号

代表色

标签命名

画像特征(一看就懂)

C1

青色

👑 自律模范型

数据全贴在地板上!不迟到不早退,纪律委员本员,校园里的正面标杆。

C2

蓝色

🌬️ 轻微波动型

没大毛病,就是偶尔迟个到、忘穿个校服,属于“敲打敲打就行”的普通玩家。

C3

黄色

🚨 纪律高危型

图表右上角疯狂乱窜的离群点就是他们!多重违纪叠加,班主任重点“盯防”对象。

2. 标签完美落库(ETL回写结果) 打开数据探查看看原始考勤表,见证奇迹的时刻——每个学生后面都整整齐齐地加上了 clusterattendance_group,数据一分不差,业务完美闭环!

有了这张带标签的新表,我们就能解决实际问题:

  1. 大屏监控: 这些打好标签的数据可以直接对接校长办公室的数据大屏,各年级、各班的“高危预警人数”占比一目了然。

  2. 精准施策: 班主任可以一键导出自己班的“轻微波动型”名单,把问题扼杀在摇篮里;对于“自律模范型”则可以作为学期末评优评先的数据佐证,彻底告别“凭感觉管理”。

第四部分:踩坑必看(血泪防坑指南)

常在河边走哪有不湿鞋,操作过程中遇到了两个巨坑,帮大家排个雷:

坑一:BI 散点图里“刺头学生”竟然隐身了?

  • 问题现象: 画 C3(纪律高危型)散点图时,发现那些极端离群点居然不显示!

  • 问题原因: 助睿 BI 默认的展示限额是 2000 条,为了防卡顿,超出部分被悄悄截断了。

  • 解决方法: 在图表右下角找到“限额”配置,果断把“2000”改成“100%”,消失的高危点瞬间全部显形。

坑二:ETL 回写数据时疯狂报错“类型不匹配”?

  • 问题现象: 在最后一步做“更新”组件写回数据库时,点击运行后日志里飘红,提示 student_id 无法关联或更新失败。

  • 问题原因: K-Means 跑出来的结果表里,student_id 会被系统默认为浮点型(Float)或者字符串,但咱们最开始的 MySQL 原表里,student_id 是整数型(Integer)。类型不同,数据库自然拒绝相认!

  • 解决方法: 在 ETL 连线中,必须加一个“字段选择”组件。点开它的“元数据”页签,手动把 student_id 的类型强制转成 Integer。这步千万不能省,血泪教训!

坑三:K-Means 跑出来的结果完全无规律?

  • 问题现象: AI Studio 里点击运行 K-Means 后模型是跑通了,但去 BI 里看散点图,发现簇跟簇之间完全混在一起,毫无区分度。

  • 问题原因: 这是新手最容易踩的坑——把学号、班级ID甚至学生姓名当成数值喂给模型了!K-Means 是靠算“距离”来分类的,如果你把“学号 202301”和“学号 202302”的差值当成考勤差距,模型当场就得“精神分裂”。

  • 解决方法: 倒车回到“数据库加载”组件!一定要把非考勤特征的字段无情过滤掉,把学号和班级设为 categorical(类别型)或者 skip,只留下四个考勤次数为 numeric(数值型)。干干净净的数据,才能喂出好模型!

第五部分:实验总结

1. 满载而归的收获

这次实验真的是打通了我的任督二脉:

  1. AI原来可以这么简单: 以前觉得跑 K-Means 要写一堆 Python 和 Pandas 代码,现在发现通过合理的零代码拖拽,数据降维分群也是分分钟的事。

  2. 业务Sense的建立: 懂得了机器吐出的冰冷代号(C1/C2)是没有价值的,必须结合 BI 散点图把它们翻译成“人话”(自律型/高危型),才是数据分析师的真正价值。

  3. 工程闭环思维: 跑完模型不算完,得把结果通过 ETL 变回业务字段存进数据库里,这叫“让数据回流业务”,太实用了!

2. 对平台的真香评价

必须吹一波 助睿数智(Uniplore) 这个平台,体验极其丝滑! 把 AI 建模、BI 报表和 ETL 清洗三大金刚完美柔和在了一个系统里。不用搞什么本地环境配置,也不用在多个软件之间倒腾数据导入导出。作为数据分析人员,我们可以把 90% 的脑容量用来思考“业务逻辑怎么建”,剩下的脏活累活全交给平台的“零代码”去跑就行了,极大地降低了数据科学的门槛,这波真的是闭眼入、疯狂点赞!

全文完,整理不易,如果你觉得有帮助,别忘了点赞收藏哦~

Logo

一站式 AI 云服务平台

更多推荐