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

简介: 本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛C题的解决方案,重点讲解了如何构建招聘与求职双向推荐系统的建模过程和Python代码实现,并对招聘信息和求职者信息进行了详细分析和画像构建。

在这里插入图片描述
更新时间:2023-4-6

相关链接

(1)建模方案

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

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

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

(2)相关赛题论文

【2023年第十一届泰迪杯数据挖掘挑战赛】A题:新冠疫情防控数据的分析 32页和40页论文及实现代码

【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 23页论文及实现代码

【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码

1 题目

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

2 问题二之建立招聘信息画像

爬取的result1-1.csv的信息如下:
序号;
招聘信息id;
公司地址;
招聘岗位;
公司类型,分为少于50人、50150人、150-500人、500-1000人、1000-5000人、5000-10000人、10000人以上;
最低薪资;
最高薪资;
员工数量,分为合资、民营公司、上市公司、国企、私企、外资;
学历,分为0、1、2、3、4、5,对应不限,技工、大专、本科、硕士、博士;
岗位经验,分为经验不限 、1年、1-3年、3-5年、5-7年、7年以上、5-10年;
企业名称;
企业类型。

import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd
from pyecharts.charts import Bar, Map, Pie, WordCloud
from pyecharts import options as opts
from pyecharts.globals import ThemeType
df = pd.read_csv("data/result1-1.csv")

2.1 招聘岗位角度

我们可以统计不同招聘岗位的数量,并使用饼图或柱状图来可视化结果。

job_count = df['招聘岗位'].value_counts().reset_index()
job_count.columns = ['招聘岗位', '需求量']

。。。。略,请下载完整代码
pie_job.render('img/1.1.html')
pie_job.render_notebook()

在这里插入图片描述

从饼图可以看出,数据分析岗位的需求最大,占比超过五分之一。

2.2 学历要求

我们可以统计不同学历要求的数量,并使用饼图或柱状图来可视化结果。

edu_count = df['学历'].value_counts().reset_index()
edu_count.columns = ['学历', '需求量']

。。。。略,请下载完整代码
bar_edu.render('img/1.2.html')
bar_edu.render_notebook()

在这里插入图片描述

从柱状图可以看出,本科学历的需求最大,占比超过四分之一。

2.3 岗位需求量

我们可以统计不同岗位需求量的数量,并使用饼图或柱状图来可视化结果。

job_total = df.groupby('招聘岗位')['招聘信息id'].count().reset_index()
job_total.columns = ['招聘岗位', '总数']
job_total = job_total.sort_values(by='总数', ascending=False)[:10]

。。。。略,请下载完整代码
bar_job.render('img/1.3.html')
bar_job.render_notebook()

在这里插入图片描述

从柱状图可以看出,经验要求在1-3年和3-5年之间的岗位需求最大,占比超过三分之一。

2.4 公司类型

我们可以统计不同公司类型的数量,并使用饼图或柱状图来可视化结果。

job_count = df['员工数量'].value_counts().reset_index()
job_count.columns = ['员工数量', '需求量']

。。。。略,请下载完整代码
pie_job.render('img/1.4.html')
pie_job.render_notebook()

在这里插入图片描述

从饼图可以看出,合资的招聘需求最大,占比超过一半。

2.5薪资待遇

我们可以统计不同薪资待遇的数量,并使用箱线图来可视化结果。

salary_data = df[['最低薪资', '最高薪资']]
plt.boxplot(salary_data.values, labels=['最低薪资', '最高薪资'])
plt.title('薪资待遇分布')
plt.ylabel('薪资(元/月)')
plt.savefig('img/5.png',dpi=300)
plt.show()

在这里插入图片描述

从箱线图可以看出,薪资待遇的中位数在10k-15k之间。

2.6 企业工作地点

统计不同工作地点的数量,并使用地图可视化工作地点的分布

map_data = df['公司地址'].value_counts().reset_index()
map_data.columns = ['地点', '需求量']

。。。。略,请下载完整代码
map_city.render('img/1.6.html')
map_city.render_notebook()

在这里插入图片描述

2.7 岗位规模

from pyecharts.charts import Pie
from pyecharts.globals import ThemeType
size_count = df['公司类型'].value_counts().reset_index()
size_count.columns = ['公司规模', '需求量']

。。。。略,请下载完整代码
pie_size.render('img/1.7.html')
pie_size.render_notebook()

在这里插入图片描述

2.8 岗位经验分析

# 岗位经验分析
exp_count = df['岗位经验'].value_counts().reset_index()
exp_count.columns = ['经验要求', '需求量']

。。。。略,请下载完整代码
bar_exp.render('img/1.8.html')
bar_exp.render_notebook()

在这里插入图片描述

通过对招聘信息的多个方向进行分析,可以得到招聘信息的全貌,并可以为求职者提供更准确的参考信息。在本文中,使用Python对招聘信息进行了分析和可视化,包括招聘岗位、学历要求、岗位需求量、公司类型、薪资待遇和企业工作地点等方面的分析。使用了pandas进行数据处理和分析,使用matplotlib和pyecharts进行可视化展示。

根据以上的分析,可以得出以下结论:
。。。。略,请下载完整代码
基于以上结论,我们可以为求职者提供以下建议:
(1)如果想要在技术类岗位中有所突出,可以重点学习前端开发、Java开发、数据分析等技能。
(2)在选择学历时,本科是最基本的要求,但如果想要更好的发展,可以考虑继续深造并获得硕士和博士学历。
。。。。略,请下载完整代码

3 问题二之建立求职信息画像

result1-2.csv的信息如下:
序号;
求职者id;
姓名;
预期岗位,格式举例[“数据挖掘工程师”,“数据分析师”,“机器学习工程师”];
预期最低薪资;
预期最高薪资;
地区,格式举例[“北京市”,“北京市”,“海淀区”]。
技能,格式举例[“数据分析”,“数据挖掘”,“机器学习”]。

为了建立求职者的画像,我们可以根据不同的方向进行分析和建模。以下是一些可能的方向和对应的建模思路:

  1. 预期岗位方向
    对求职者的预期岗位进行分类,例如"数据分析岗位"、“机器学习岗位”、"数据挖掘岗位"等。
    对不同岗位的求职者进行比较,例如不同岗位对学历、工作经验、技能的要求等。
    使用机器学习算法对预期岗位进行预测,例如使用文本分类模型对求职者的求职意愿进行分类。
  2. 薪资需求方向
    对求职者的薪资需求进行统计和分析,例如计算平均值、中位数、标准差等。
    对不同薪资水平的求职者进行比较,例如不同薪资水平对学历、工作经验、技能的要求等。
    使用机器学习算法对薪资进行预测,例如使用回归模型对求职者的薪资需求进行预测。
  3. 知识储备方向
    对求职者的技能进行统计和分析,例如计算出现频率最高的技能、不同技能之间的关系等。
    对不同技能的求职者进行比较,例如不同技能对学历、工作经验、薪资等方面的要求。
    使用机器学习算法对求职者的技能进行预测,例如使用文本分类模型对简历中出现的技能进行分类。
  4. 学历方向
    对求职者的学历水平进行统计和分析,例如计算不同学历水平的求职者数量、占比等。
    对不同学历水平的求职者进行比较,例如不同学历水平对薪资、岗位等方面的影响。
    使用机器学习算法对求职者的学历进行预测,例如使用文本分类模型对简历中出现的学历进行分类。
  5. 工作经验方向
    对求职者的工作经验进行统计和分析,例如计算不同工作经验的求职者数量、占比等。
    对不同工作经验的求职者进行比较,例如不同工作经验对薪资、岗位等方面的影响。
    使用机器学习算法对求职者的工作经验进行预测,例如使用回归模型对求职者的工作经验进行预测。

3.1 求职者画像分析

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Pie, WordCloud
from pyecharts.globals import SymbolType

# 读取数据文件
data = pd.read_csv('data/result1-2.csv')

# 统计预期岗位数量
job_counts = data['预期岗位'].apply(lambda x: len(eval(x))).value_counts().sort_index()
job_counts_labels = ['{}个'.format(i) for i in job_counts.index]
job_counts_values = job_counts.values.tolist()

# 绘制预期岗位数量柱状图
job_counts_bar = Bar()
。。。。略,请下载完整代码
job_counts_bar.render('img/2.1.html')
job_counts_bar.render_notebook()

在这里插入图片描述

# 统计技能频率
skills = pd.Series([skill for sublist in data['技能'] for skill in eval(sublist)])
skill_counts = skills.value_counts().sort_values(ascending=False).head(20)
skill_counts_labels = skill_counts.index.tolist()
skill_counts_values = skill_counts.values.tolist()
# 绘制技能词云图
。。。。略,请下载完整代码
skill_wordcloud.render('img/2.2.html')
skill_wordcloud.render_notebook()

在这里插入图片描述



# 统计薪资需求
salary_mean = data[['预期最低薪资', '预期最高薪资']].mean().values.tolist()

# 绘制薪资需求条形图
。。。。略,请下载完整代码
salary_bar.render('img/2.3.html')
salary_bar.render_notebook()

在这里插入图片描述

3.2 对平均预期薪资进行预测

import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, f1_score

# 读取数据
data = pd.read_csv("data/result1-2.csv")

# 数据预处理
# 对预期岗位、地区、技能进行One-hot编码
positions = data['预期岗位'].str.strip('[]').str.replace("'", "").str.split(',', expand=True)
positions.columns = ['position_{}'.format(i) for i in range(positions.shape[1])]
positions = positions.apply(LabelEncoder().fit_transform)
onehot = OneHotEncoder()
positions = onehot.fit_transform(positions)

regions = data['地区'].str.strip('[]').str.replace("'", "").str.split(',', expand=True)
regions.columns = ['region_{}'.format(i) for i in range(regions.shape[1])]
regions = regions.apply(LabelEncoder().fit_transform)
onehot = OneHotEncoder()

regions = onehot.fit_transform(regions)

skills = data['技能'].str.strip('[]').str.replace("'", "").str.split(',', expand=True)
skills.columns = ['skill_{}'.format(i) for i in range(skills.shape[1])]
skills = skills.apply(LabelEncoder().fit_transform)
onehot = OneHotEncoder()
skills = onehot.fit_transform(skills)

from scipy.sparse import hstack,vstack
# 合并数据
。。。。略,请下载完整代码
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size=0.3, random_state=42)

# 建立决策树模型
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)

# 预测测试集

y_pred = clf.predict(X_test)

# 模型评估
print("Accuracy Score:", accuracy_score(y_test, y_pred))
print("F1 Score:", f1_score(y_test, y_pred, average='macro'))

Accuracy Score: 0.9838167938931298
F1 Score: 0.06426220590235279

以上代码中,我们首先使用pandas库读取result1-2.csv文件,并对预期岗位、地区、技能等属性进行One-hot编码处理,然后划分为训练集和测试集,标签为预期薪资的均值,使用决策树算法建立模型,并对模型进行评估。其中,我们使用了sklearn库中的LabelEncoder、OneHotEncoder、DecisionTreeClassifier等模块,简化了特征处理和模型建立的过程。

4 获取方式

电脑浏览器打开

betterbench.top/#/74/detail

目录
相关文章
|
1月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
4月前
|
存储 运维 数据挖掘
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎
在智能驾驶技术快速发展中,数据成为驱动算法进步的核心。某新能源汽车领军企业基于阿里云Milvus向量数据库构建智能驾驶数据挖掘平台,利用其高性能、可扩展的相似性检索服务,解决了大规模向量数据检索瓶颈问题,显著降低20%以上成本,缩短模型迭代周期,实现从数据采集到场景挖掘的智能化闭环,加速智能驾驶落地应用。
革新智能驾驶数据挖掘检索效率!某国内新能源汽车未来出行领导者选择阿里云Milvus构建多模态检索引擎
|
3月前
|
API 开发工具 开发者
【干货满满】电商平台API接口用python调用脚本
这是一个支持淘宝、京东、拼多多、亚马逊等主流电商平台的通用 API 调用 Python 脚本框架,适配 doubao 使用。脚本封装了签名验证、请求处理、异常捕获及限流控制等核心功能,提供统一接口调用方式,便于开发者快速集成与扩展。
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
621 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
4月前
|
缓存 监控 API
1688平台开放接口实战:如何通过API获取店铺所有商品数据(Python示列)
本文介绍如何通过1688开放平台API接口获取店铺所有商品,涵盖准备工作、接口调用及Python代码实现,适用于商品同步与数据监控场景。
|
8月前
|
机器学习/深度学习 数据采集 数据可视化
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
|
8月前
|
存储 监控 API
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
|
10月前
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
612 1
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
462 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发

热门文章

最新文章

推荐镜像

更多