基于 Python 的随机森林和 XGBoost 薪资预测模型:从数据爬取到预测优化

基于 Python 的随机森林和 XGBoost 薪资预测模型:从数据爬取到预测优化


引言

在招聘市场中,职位的薪资水平是求职者和企业关注的核心指标之一。然而,由于不同职位的薪资标准受多方面因素影响,例如年限要求学历要求公司规模行业类型等,因此单纯依靠经验进行判断难以精准。为此,我们通过 Python 数据爬取、数据清洗、特征工程、机器学习建模等步骤,构建出薪资预测模型,帮助用户更加直观地了解市场薪酬水平。

系列博客结构

  1. Python 爬取 BOSS 直聘职位数据并保存到 Excel
    通过 Python 结合爬虫库,批量获取 BOSS 直聘的职位数据,存储为 Excel 文件格式,为后续分析提供数据支持。

  2. Python 清洗与深度解析 BOSS 直聘数据
    对爬取到的数据进行标准化和清洗,包括薪资转换年限解析公司规模分析等,以保证模型输入的数据质量。

  3. 揭秘职场薪资秘密:用 Python 全面解读 BOSS 直聘招聘数据

    基于清洗后的数据展开深入分析,围绕薪资分布、职位要求、行业分布等多个维度,揭示职场薪资秘密、技能需求和地域分布特点

  4. Python 实现岗位需求趋势与薪资预测(本文):
    使用随机森林XGBoost模型对招聘数据进行薪资预测,进行模型性能比较,并通过可视化和解释工具深入分析模型输出结果。


环境配置与库安装

1. 需要安装的 Python 库

本文使用以下 Python 库:

  • pandas:数据读取与处理。
  • numpy:数值运算。
  • scikit-learn:机器学习模型库。
  • xgboost:提升树模型库。
  • matplotlibseaborn:可视化工具。
  • shap:解释机器学习模型输出的重要性。
  • joblib:用于保存和加载模型。
  • nltk:停用词处理
2. 安装指令

建议使用阿里云镜像源加速库安装:

pip install -i https://mirrors.aliyun.com/pypi/simple pandas numpy scikit-learn xgboost matplotlib seaborn shap joblib openpyxl nltk

数据预处理与特征工程

读取 Excel 数据
import pandas as pd
import numpy as np
import re
from sklearn.preprocessing import OneHotEncoder
from sklearn.model_selection import train_test_split

# 读取 Excel 文件
df = pd.read_excel('job_data.xlsx')

# 删除缺失值
df.dropna(subset=['岗位要求', '薪资描述'], inplace=True)
标准化薪资字段

我们将薪资范围(如 8k-15k/月年薪15万·14薪)标准化为中位数值:

def extract_salary(salary_text):
    salaries = re.findall(r'\d+', salary_text)
    if len(salaries) == 2:
        return (int(salaries[0]) + int(salaries[1])) // 2
    elif len(salaries) == 1:
        return int(salaries[0])
    else:
        return np.nan

df['平均薪资'] = df['薪资描述'].apply(extract_salary)
df.dropna(subset=['平均薪资'], inplace=True)
转换其他字段

是否上市转化为二进制值,将公司规模中的人数标准化为数值:

df['是否上市'] = df['是否上市'].apply(lambda x: 1 if '上市' in x else 0)
df['公司规模'] = df['公司规模'].apply(lambda x: int(re.findall(r'\d+', str(x))[0]) if re.findall(r'\d+', str(x)) else 10)
独热编码特征

城市行业类型进行独热编码&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中國移动丶移不动

码农

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值