【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题三

news2024/11/20 23:36:50

在这里插入图片描述

相关链接

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题二

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题三

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题四

完整代码下载见图中信息

请添加图片描述

1 题目

见【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一

2 问题三构建岗位匹配度和求职者满意度的模型

在招聘和求职过程中,企业面对多位优质求职者,将会考虑求职者能力要求、技能掌握 等多方面,岗位匹配度是体现求职者满足企业招聘要求的匹配程度;同样,求职者对于多种 招聘信息,也会依据自身条件和要求,选取符合自己心意的岗位,因此求职者满意度指标可 客观体现求职者对企业招聘岗位的满意程度。对于不满足岗位最低要求的求职者,企业可定 义其岗位匹配度为 0。同样,对于不满足求职者最低要求的岗位,求职者可定义其求职者满 意度为 0。

根据问题2的招聘信息与求职者信息,构建岗位匹配度和求职者满意度的模型,基于该模型,为每条招聘信息提供岗位匹配度非0的求职者,将结果进行降序排序存放在“resul3 - 1. csv”文件中,以及为每位求职者提供求职者满意度非0的招聘信息,将结果进行降序排序存放在“result3 - 2. csv”文件中。(模板文件见附件1中的CSV文件)

3 思路解析

建模方案

为了构建岗位匹配度和求职者满意度的模型,需要先对result1-1.csv和result1-2.csv数据进行清洗和处理,然后才能计算出每个招聘信息对应的岗位匹配度和每位求职者对应的求职者满意度。

  1. 对result1-1.csv进行清洗和处理:
  • 去除重复的招聘信息id;
  • 对于空值或无意义的数据进行删除或替换;
  • 对员工数量、学历、岗位经验等分类数据进行数字化处理,便于后续计算。
  1. 对result1-2.csv进行清洗和处理:
  • 去除重复的求职者id;
  • 对于空值或无意义的数据进行删除或替换;
  • 将预期岗位和技能进行关键词提取和分词处理,便于后续计算。
  1. 计算岗位匹配度:
  • 对于每条招聘信息,根据预期岗位和技能对求职者进行筛选,筛选出符合条件的求职者;
  • 对于每个符合条件的求职者,计算其与招聘信息的岗位匹配度,可以使用技能匹配度和职位匹配度等指标进行计算;
  • 对于每条招聘信息,将所有符合条件的求职者的岗位匹配度求和,得到该招聘信息的总岗位匹配度。
  1. 计算求职者满意度:
  • 对于每位求职者,根据学历、岗位经验等条件对招聘信息进行筛选,筛选出符合条件的招聘信息;
  • 对于每个符合条件的招聘信息,计算其与求职者的求职者满意度,可以使用薪资、公司类型、工作地点等指标进行计算;
  • 对于每位求职者,将所有符合条件的招聘信息的求职者满意度求和,得到该求职者的总求职者满意度。
  1. 根据计算出来的岗位匹配度和求职者满意度,按照岗位匹配度进行排序得到result3-1.csv,按照求职者满意度进行排序得到result3-2.csv。

4 代码实现

4.1 岗位匹配度

import pandas as pd
import numpy as np

# 读取招聘信息和求职者信息
job_info = pd.read_csv('data/result1-1.csv')
job_seekers = pd.read_csv('data/result1-2.csv')

# 将招聘信息和求职者信息合并,使用交叉连接的方式
job_matching = pd.merge(job_info.assign(key=1), job_seekers.assign(key=1), on='key').drop('key', axis=1)

# 定义计算匹配度函数
def calculate_match(row):
    # 判断学历匹配度,如果不符合则匹配度为0
   。。。略,请下载完整代码
    # 判断岗位是否匹配,如果有一个岗位匹配则匹配度为1,否则为0
   。。。略,请下载完整代码
    return 0

# 计算岗位匹配度
job_matching['匹配度'] = 。。。略,请下载完整代码
# 根据匹配度降序排序
job_matching = job_matching.sort_values(by='匹配度', ascending=False)
# 保存结果
job_matching[['招聘信息id', '求职者id', '匹配度']].to_csv('data/result3-1.csv', index=False)

4.2 求职者满意度


from ast import literal_eval
# 读取招聘信息和求职者信息
job_info = pd.read_csv('data/result1-1.csv')
job_seekers = pd.read_csv('data/result1-2.csv')
# 使用literal_eval()函数将字符串转换为列表
job_seekers['预期岗位'] = job_seekers['预期岗位'].apply(literal_eval)
# 使用explode()函数将列表中的元素分解成单独的行
job_seekers_all = job_seekers.explode('预期岗位')

# 将招聘信息和求职者信息合并,使用左连接的方式
。。。略,请下载完整代码
# 求四列数据的最大值
max_value = max(job_satisfaction[['最低薪资','最高薪资','预期最低薪资','预期最高薪资']].max())
# 求四列数据的最小值
min_value = min(job_satisfaction[['最低薪资','最高薪资','预期最低薪资','预期最高薪资']].min())
# 将薪资归一化
def min_max_normalize(x):
    if min_value == max_value:
        return x
    return (x - min_value) / (max_value - min_value)
job_satisfaction['最低薪资'] = job_satisfaction['最低薪资'].apply(min_max_normalize)
job_satisfaction['最高薪资'] = job_satisfaction['最高薪资'].apply(min_max_normalize)
job_satisfaction['预期最低薪资'] = job_satisfaction['预期最低薪资'].apply(min_max_normalize)
job_satisfaction['预期最高薪资'] = job_satisfaction['预期最高薪资'].apply(min_max_normalize)


# 对于求职者满意度的计算,可以采用类似的方法,将招聘信息和求职者信息合并后,按照求职者的要求和条件进行筛选和计算匹配度。以下是一个基于pandas库的求职者满意度计算方案:
# 定义计算满意度函数
def calculate_satisfaction(row):
    # 判断薪资是否满意,如果不满意则满意度为0
    。。。略,请下载完整代码
 
    # 计算专业技能匹配度
   。。。略,请下载完整代码
    # 计算工作经验匹配度
    。。。略,请下载完整代码
    # 计算学历匹配度
    。。。略,请下载完整代码

    # 还有地区距离满意度
    。。。略,请下载完整代码
    # 权重自己定
    # total_satisfaction = 0.4 * salary_satisfaction + 0.2 * skill_satisfaction + 0.2 * exp_satisfaction + 0.2 * edu_satisfaction
    return total_satisfaction

# 计算满意度
job_satisfaction['满意度'] = job_satisfaction.apply(calculate_satisfaction, axis=1)
# 根据满意度降序排序
job_satisfaction = job_satisfaction.sort_values(by='满意度', ascending=False)
# 保存结果
job_satisfaction[['招聘信息id', '求职者id', '满意度']].to_csv('data/result3-2.csv', index=False)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件应用】TamperMonkey同步操作

不废话,记录一些关键点 要设置同步,先得打开高级设置模式 众所周知,这里可以设置同步,建议设置为WebDAV同步,这样通用性更强 至于选择啥网盘就看自己的需求了,支持WebDAV的网盘还是很多的,甚…

数据库设计案例

一个专辑可以包含多个曲目,一个曲目只能属于一个专辑 一对多 一个专辑可以包含多条短评,一条短语只能属于一个专辑 一对多 一个用户可以包含多条短评,一个短评只能属于一个用户 一对多 一个专辑可以属于多个用户,一个用户…

04-vue3侦听器

文章目录1.watch1.侦听数据源类型2.demo2.watchEffect函数3.watch vs. watchEffect1.watch 计算属性允许我们声明性地计算衍生值。然而在有些情况下,我们需要在状态变化时执行一些“副作用”:例如更改 DOM,或是根据异步操作的结果去修改另一…

熬大夜~ 阿里P8架构师总结微服务设计企业架构转型之道笔记

前言 本文涉及两个方面的知识体系,即企业架构知识体系和软件架构知识体系。 企业架构和软件架构虽然都与IT相关,但其知识体系是完全不同的两个领域。一般而言,搞企业架构的人士不明白软件架构的细节和实现,而从事软件架构的架构…

如何评价一款RTK差分基站的性能?

RTK是Real-Time Kinematic(实时动态)的缩写,是一种利用载波相位观测进行实时动态相对定位的技术,它能够实时提供测站点在指定坐标系中的三维定位结果,并达到厘米级精度。国内有时也将利用RTK技术为卫星定位设备提供厘米级修正服务的RTK基站简…

114. 二叉树展开为链表 Python

文章目录一、题目描述示例 1示例 2示例 3二、代码三、解题思路一、题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终…

基于jsp的公交查询系统源码数据库论文

目录 摘 要 1 Abstract 1 1 绪论 1 1.1 选题背景 1 1.2 国内外发展状况 1 1.3 选题的目的 1 1.4 研究手段及意义 1 2相关技术简介 3 2.1Jsp技术介绍 3 2.2 MyEclipse简介 4 2.3 数据库技术 4 2.3.1 数据库的体系结构 4 2.3.2 数据库管理系统(D…

(十七)排序算法-基数排序

1 基本介绍 1.1 概述 (1)基数排序(radix sort)属于“分配式排序”,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。 (2&#x…

Denoising Diffusion Probabilistic Model,DDPM阅读笔记——(一)

Denoising Diffusion Probabilistic Model一、写在前面二、相关数学知识简介二、生成模型简介:三、变分自编码器概述(VAE)一、写在前面 人工智能生成内容(AI Generated Content,AIGC)近年来成为了非常前沿…

2023最新面试题-Java-2

基础语法 1. Java有哪些数据类型 定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同 大小的内存空间。 细化的数据类型就是占用空间的基本元素。分类:基本数据类型 数值型 整数类型…

MySQL-事务处理

MySQL事务 什么是事务 数据中的事务是指数据库执行的一些操作,这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功,部分失败的情况 如果在事务的支持下,最终有两种结果: 操作成功:…

推荐一款 AI 脑图软件,助你神速提高知识体系搭建

觅得一款神器,接近我理想中,搭建知识体系的方法,先来看视频作为数据库开发或管理者,知识体系搭建尤为重要。来看看近些年缺乏足够数据库知识面造成的危害:a/ 数据安全风险:例如,2017年Equifax数…

Dubbo之认识RPC架构

文章目录一、互联网架构演变1.1 RPC架构1.2 SOA架构1.3 微服务架构1.4 SOA vs 微服务二、RPC 基本概念2.1 RPC 协议2.2 RPC 框架2.3 RPC 运行流程2.4 RPC vs HTTP提示:以下是本篇文章正文内容,Dubbo 系列学习将会持续更新 官方文档:https://c…

电池连接接触电阻的优化研究

金属与金属接触处的接触电阻主要受以下因素影响: 表面结构机械负载 表面结构可以通过表面平整度、表面氧化和吸水性进一步描述。 电池组中的这些接头将采用焊接或螺栓连接方式。最初最容易想到的是螺栓母线接头。 螺栓扭矩可用于估算力,从而估算接触压…

mvc的编辑和删除

之前实现了mvs的翻页登录显示等等一系列操作,现在我们再照葫芦画瓢实现一下编辑和删除。 1、编辑 我的思路是首先在list页面要给出编辑的超链接按钮,点击后跳转到一个jsp页面用来输入编辑的相关内容,再提交到负责编辑功能的servlet中。 首…

双硬盘安装Ubuntu22

1、下载Ubuntu系统的iso文件 官方下载地址:Download Ubuntu Desktop | Download | Ubuntu 阿里云镜像下载地址:ubuntu-releases安装包下载_开源镜像站-阿里云 2、制作U盘引导盘 下载软件 Rufus:https://rufus.akeo.ie 绿色免安装&#xff0…

Spring Security源码剖析从入门到精通.跟学尚硅谷(二)

Spring Security源码剖析从入门到精通.跟学尚硅谷 二4. SpringSecurity 微服务权限方案4.1 什么是微服务1、微服务由来2、微服务优势3、微服务本质4.2 微服务认证与授权实现思路1、认证授权过程分析2、权限管理数据模型3、项目技术说明4、搭建工程(1).创建父工程(2).创建子模块…

2023年天猫青团销售数据:口味更个性化,但老字号品牌依然称霸

青团本是清明时节祭祀的产物,但随着时节的推移,青团已经突破了地域与时间的限制,如今的青团已经成为地域性特色小吃的一种,并逐渐被全国消费者所接受。 随着消费回暖及内容营销的助力,今年的青团季比往年相比提高了不少…

天气预报查询 API + AI 等于王炸(一大波你未曾设想的天气预报查询 API 应用场景更新了)

前言 近年来,随着信息化进程的不断深入,人们对于信息的获取和处理需求越来越高。而其中,天气查询API是一个非常重要的服务,它能够帮助人们快速获取所在位置的天气情况,同时也为各类应用提供了必要的气象数据支持。 本…

Vue组件化编程

模块与组件、模块化与组件化 传统方式编写应用 使用组件方式编写应用 模块 理解:向外提供特定功能的 js 程序,一般就是一个 js 文件为什么:js 文件很多很复杂作用:复用 js,简化 js 的编写,提高 js 运行效…