教你用机器学习匹配导师 !(附代码)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介:

在顶点课程中我们组被分配到一个非营利机构,这个机构帮助青年学生和科技领域中的专业人士建立联系,目的在于提升在校学生对科技产业的参与度(译者注:顶点课程capstone project是美国大学高年级学生的环节,类似于中国大学的毕业设计)。学生要和导师(专业人士)配对,导师与学生会面并带他们了解这个行业。每次会面后,学生和导师都需要对会面进行评分。满分是5分,1分是最低分。

这个机构根据学生的评分来衡量会面是否成功,因此他们想了解哪些特征和变量会提升评分。一旦有这些东西,我们就可以构建一个算法来匹配学生和导师,并生成一个在线图表界面进行可视化展示。

我们计划用Python完成算法和实现展示。 首先,我们进行数据清洗并定义语料库(Corpus),随后借助逻辑回归来识别重要特征,接着我们构建了匹配得分和分配算法,最终将所有内容打包并放到Flask图表界面中。

数据清洗和生成语料库

数据集由80多个特征组成,但是我们要尽量减少特征,最后选择了25个最重要的特征。数据集中的数值型数据相对干净,但字符型数据比较乱,需要对数据进行标准化处理。

我们对输入文本进行了自然语言处理。首先将所有用户的文本字段汇总在一起;随后用Python中的NLTK包进行分词;接着我们去掉了其中的表情符号、终止词和标点,并对剩余的词进行词形还原。300余名用户的原始单词集中有81000个词汇,在文字处理后,词汇数量减少到了54000个。最后,我们统计每个单词在数据集中出现的频数并删除出现次数少于5次的单词。最终,唯一的词汇列表形成语料库。

226468f9e3da1150b71f1a570e8d23ba82a3ee87

用同样的方式,进一步得到每个用户的经语料库过滤的关键词列表。

0e4c4175d7f387e4894fbae8d2d38620b0dd637b

筛选重要特征

为了确定哪些变量对满分评价有更大贡献,我们对18个特征进行逻辑回归。结果显示word_count, tech_common, and tech_common:stud_experience_o是影响最显著的变量。其中word_count是学生和导师共同使用的单词的数量;tech_common是一个布尔值,当学生和导师有相同的技术兴趣时,它的值为True;tech_common:stud_experience_o是一个变量,这个变量结合了tech_common的效果还有学生已达到的教育水平。

ff660977918eca5d383f01b7d9aa7fbf42ed2c9e

结果在我们预料之中,因为有更多相同的关键字意味着学生和导师有更多的共同话题。更有可能获得有趣的交流,使学生更倾向给会面打高分。

匹配得分和分配算法

匹配算法包括确定所有可能配对的得分和分配逻辑两个部分。我们既可以通过逻辑回归,也可以通过K-近邻(KNN)来计算匹配得分。

94e51c5ebf7eb74234e5b271b3de7b9c956bcb67

逻辑回归的公式会计算一个0到1之间的值,这是得到目标结果的概率,在本案例中是得到5星评价的概率。我们的目标当然是得到更高的概率。计算所有可能配对的得分并将其放到矩阵中。数据格式化的方式很重要,因为它将生成输入配对算法的原始数据。

fbb469a60b8a8b3e3202a6ae4745c4a84d5123ae

现在我们将通过K-近邻算法计算得分。对第二部分中的每个用户制作关键词列表,这将成为K-近邻计算得分的输入。

608b6b9332662ba215f7622c78dbb936fab2bebc

如上所示,针对每个用户都会生成一个二维矩阵,其中每列是用户产生的关键词,每个用户都是索引。用户和其他用户是否有共同词汇将通过0和1表示。这个矩阵将作为K-近邻函数的输入,随后得到一个代表两个人之间距离的值。两个人之间的共同词汇越多,这个值就越低。我们对这个值进行标准化处理,使其值在0到1之间。这意味着一个人和他自己的距离是0;如果另一个人和他没有任何匹配单词,则两个人的距离为1。

bd32dc85fc93beaac6ff74a04ceecfe6d165d382

使用所有可能配对的分数矩阵来计算基于特定条件的可能配对。例如,为了见面方便,我们希望学生和导师来自同一个城市。首先用最严格的条件集合。如果没有找到匹配得结果。条件逐步放松,直到最终只剩下一个条件。

f8713a55ad5483a648324c29c340b2976690ebfb

一个用户可能有多个相同最佳得分的匹配结果。我们通过随机抽样来进行配对。我们使用蒙特卡洛模拟来进行随机配对,进而得到给定的学生群体的最佳匹配集。

Flask图表界面

图表界面会显示每批次数据,排名分布,常用关键词词云,以及每个用户的关键词列表。此外,还有一个区域可以查看最佳匹配结果。图表界面使用了Jupyter notebook的结构,后端是Python代码,可以生成CSV文件,这个CSV文件进而在前端Flask中处理。


原文发布时间为:2018-05-17

本文作者:数据派

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
|
前端开发 算法
如何玩转新技术栈!高德大前端演进历程
高德技术开放日已经顺利落幕,我们准备了精彩的视频回放。这次放出的是由高德工程技术中心 郭忍东 为大家带来的《如何玩转新技术栈!高德大前端演进历程》。
1363 0
如何玩转新技术栈!高德大前端演进历程
|
3月前
|
数据采集 缓存 监控
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
本文详解淘宝商品链接解析方案:官方API(合规稳定,需申请权限)与第三方API(快速接入,注意合规性)双路径对比。涵盖num_iid提取、接口调用、字段说明、避坑指南及选型建议,助开发者高效、安全获取商品价格、库存等动态数据。(239字)
|
监控 API 计算机视觉
CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
CompreFace 是一个在 GitHub 上拥有 6.1k Star 的轻量级人脸识别库,支持 API 和 SDK。它由 Exadel 公司开发,基于深度学习技术,提供高效、灵活的人脸识别解决方案。CompreFace 支持多种模型(如 VGG-Face、OpenFace 和 Facenet),具备多硬件支持、丰富的功能服务(如人脸检测、年龄性别识别等)和便捷的部署方式。适用于安防监控、商业领域和医疗美容等多个场景。
2023 4
|
人工智能 监控 数据可视化
基于YOLOv8的边坡排水沟堵塞检测与识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目以YOLOv8为核心,结合PyQt5界面开发,构建了一个专用于边坡排水沟堵塞检测的智能识别系统。从数据标注、模型训练、精度评估,到图形界面部署与多输入方式支持,实现了从0到1的完整AI应用开发流程。
基于YOLOv8的边坡排水沟堵塞检测与识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
安全 网络协议 Linux
搭建FTP站点(Alibaba Cloud Linux 3)
vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。
搭建FTP站点(Alibaba Cloud Linux 3)
|
11月前
|
存储 监控 安全
告别版本混乱!同步盘让团队协作不再成为噩梦
同步盘是一种支持多成员、跨设备实时文件同步的企业云存储产品。用户只需在电脑、手机等设备上安装同步盘客户端,所有指定资料便会自动上传至云端,且随时随地同步到任意终端,实现企业高效协同办公,减少了数据的传递和管理时间。
|
人工智能 算法 搜索推荐
从调研到交付,双钻设计模型如何贯穿整个设计流程?
2分钟带你了解双钻设计模型及其实操
963 2
从调研到交付,双钻设计模型如何贯穿整个设计流程?
|
机器学习/深度学习 PyTorch API
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)
深度学习入门:卷积神经网络 | CNN概述,图像基础知识,卷积层,池化层(超详解!!!)
1030 0
|
关系型数据库 数据库
关系型数据库设计规范第二范式(2NF)
【5月更文挑战第14天】关系型数据库设计规范第二范式(2NF)
1338 7
|
缓存 监控 安全
API网关的用途
【8月更文挑战第23天】
857 0