Python 数据建模与分析项目实战预备 Day 2 - 数据构建与字段解析(模拟简历结构化数据)

✅ 今日目标

  • 构建项目所需的简历结构化数据(模拟或从开源源获取)
  • 明确各字段的含义、类型和取值范围
  • 输出首个训练数据集(CSV / DataFrame 格式)

🧾 一、模拟简历数据字段设计(结构化)

我们将构建如下字段的结构化数据,每条代表一个候选人:

字段 含义 类型 示例值
degree 学历等级 分类变量(本科/硕士/博士) "硕士"
university_type 学校等级 分类变量(双一流/普通) "双一流"
work_years 工作年限 数值型 3
skill_python 是否掌握 Python 布尔/0-1 1
skill_sql 是否掌握 SQL 布尔/0-1 1
skill_ml 是否掌握机器学习 布尔/0-1 0
project_count 项目数量 数值型 2
project_desc_len 项目描述总长度(字符) 数值型 500
pass_screening 是否通过简历初筛 目标值(0/1) 1

🛠 二、构建模拟数据

我们将生成 200 条样本数据,模拟随机简历,规则包含:

  • 学历越高、学校越好、技能越多,越可能通过筛选
  • 项目数量 + 描述越丰富,也会有正相关影响
  • 引入一定随机性避免过拟合

✨ 今日产出

  • 一个名为 resume_data.csv 的训练数据文件

    使用以下代码生成样本数据:

    python 复制代码
    # Kernel was reset, so we need to regenerate the dataset again
    
    import pandas as pd
    import numpy as np
    import os
    
    # 设置随机种子
    np.random.seed(42)
    n = 200
    
    # 模拟字段
    degrees = np.random.choice(['本科', '硕士', '博士'], size=n, p=[0.6, 0.3, 0.1])
    univ_types = np.random.choice(['普通', '双一流'], size=n, p=[0.7, 0.3])
    work_years = np.random.randint(0, 11, size=n)
    skill_python = np.random.choice([0, 1], size=n, p=[0.3, 0.7])
    skill_sql = np.random.choice([0, 1], size=n, p=[0.4, 0.6])
    skill_ml = np.random.choice([0, 1], size=n, p=[0.6, 0.4])
    project_count = np.random.randint(0, 6, size=n)
    project_desc_len = np.random.randint(50, 1000, size=n)
    
    # 评分构造
    score = (
        (degrees == '博士') * 2 +
        (degrees == '硕士') * 1 +
        (univ_types == '双一流') * 1 +
        work_years * 0.2 +
        skill_python * 1.5 +
        skill_sql * 1.2 +
        skill_ml * 1.3 +
        project_count * 0.8 +
        (project_desc_len / 500)
    )
    
    prob = 1 / (1 + np.exp(-(score - 7)))  # sigmoid
    pass_screening = (np.random.rand(n) < prob).astype(int)
    
    # 生成 DataFrame
    df = pd.DataFrame({
        "degree": degrees,
        "university_type": univ_types,
        "work_years": work_years,
        "skill_python": skill_python,
        "skill_sql": skill_sql,
        "skill_ml": skill_ml,
        "project_count": project_count,
        "project_desc_len": project_desc_len,
        "pass_screening": pass_screening
    })
    
    # 保存 CSV
    csv_path = "./data/resume_data.csv"
    df.to_csv(csv_path, index=False)
    print(f"✅ 模拟数据已生成并保存到 {csv_path}")
  • 字段说明字典或文档 (如上述第一章所示)

相关推荐
andyweike5 分钟前
Swift
开发语言·ios·swift
纪念 2297 分钟前
C++算法(六)
开发语言·c++·算法
forest_0915 分钟前
当 AI 搜索开始「自我进化」,谁来进化它的核实?——「已核实」结论复核器:3 条结论挖出 2 个洞(附可运行代码)
人工智能·python·机器学习·prompt·agi
小小张说故事35 分钟前
Python 的 str 为什么设计成不可变?拆开字符串驻留、字符串池,以及 += 拼接到底慢在哪
后端·python
ljt272496066138 分钟前
Python笔记(十一)--Numpy(一)
笔记·python·numpy
时早玖沐43 分钟前
KOOK「找不到语音频道」:同一个错误假设,我犯了三次
python·开源·ai编程
_冷眸_44 分钟前
Python 调用大模型 API:最小请求、Base URL 和 401/404 排查
开发语言·人工智能·python
niucloud-admin1 小时前
NIUCLOUD PHP SAAS上门家政使用文档:服务保障
java·开发语言·php
Dumbness1 小时前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
甜到心里的蛋糕1 小时前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作