feat: 初始化课程仓库 - 走进AI,让AI告诉我未来职业

This commit is contained in:
amylier 2026-07-15 14:02:23 +08:00
parent ad9e148868
commit 76fcea5da3
6 changed files with 564 additions and 1 deletions

View File

@ -1,2 +1,66 @@
# AI-Tell-My-Future-Career
# 走进AI让AI告诉我未来职业
## 1. 课程概述
本课程基于南开大学赵宏老师《人工智能与创新》课程探索4以"AI职业预测"为项目主线,带领学习者从零开始,体验从**数据准备 → 模型训练 → 应用构建**的完整机器学习流程。
你将跟随一名大学生的视角从对未来的迷茫与好奇出发通过与AI的持续对话和动手实践逐步理解AI职业预测的工作原理并亲手构建一个能从数据中学习并预测职业倾向的AI系统。
## 2. 学习目标
通过本课程,您将:
1. **理解AI预测的本质**——数据驱动的经验归纳与模式匹配,而非神秘"玄学"
2. **掌握与AI协作的方法**——将模糊的问题转化为清晰、可执行的技术指令
3. **体验完整的机器学习流程**——从数据准备、模型训练到应用部署
4. **亲手构建一个AI应用**——从零实现"职业倾向预测系统"
## 3. 适合的学习者
- 零编程基础的高校学生对AI充满好奇
- 希望了解机器学习入门流程的初学者
- 想体验"以用促学"实践式学习方法的自学者
## 4. 课程结构
| 章节 | 章节名称 | 主要内容 | 学习目标 |
|:----:|----------|----------|----------|
| 1 | [激发——提出感兴趣的话题](docs/chapter1.md) | 观察AI职业预测现象提出核心问题理解探索路径 | 建立对AI职业预测的直观认知明确学习目标 |
| 2 | [探索——发现问题本质](docs/chapter2.md) | 理解AI预测原理数据驱动+模式匹配),拆解为数据准备、规律分析、应用设计三个层面 | 掌握将复杂问题分解为可执行步骤的思维方式 |
| 3 | [拓展——学习知识与技能](docs/chapter3.md) | 数据准备→生成模拟数据;规律分析→训练随机森林模型;应用开发→构建交互程序 | 掌握数据生成、模型训练、应用开发的基础实践 |
| 4 | [执行——动手解决问题](docs/chapter4.md) | 从社团推荐升级到职业预测生成1500条职业数据构建完整交互式预测系统 | 独立完成从数据到模型的完整AI应用构建 |
| 5 | [评价——反思与总结](docs/chapter5.md) | 评估模型效果反思AI边界总结"从问题到系统"的构建思维 | 形成可迁移的AI协作思维模式 |
## 5. 实操演练
本课程秉持 **"做中学Learning by Doing"** 原则,实践环节贯穿全课程。学习者将跟随课程进度,逐步构建自己的职业预测系统:
- **第3章**:生成模拟社团推荐数据 → 训练分类模型 → 构建命令行交互程序
- **第4章**生成1500条职业预测数据 → 训练随机森林模型 → 构建完整职业预测系统
- **第5章**评估模型性能反思AI工具的边界
## 6. 课程打卡指引
本项目采用 **Issue 评论打卡** 方式。完成每章任务后,在对应 Issue 下提交您的学习成果。
| 任务 | 名称 | 说明 |
|:----:|------|------|
| 任务1 | 📖 第1章学习打卡 | 提出你对AI职业预测的3个问题 |
| 任务2 | 📖 第2章学习打卡 | 用自己的话复述AI预测的核心原理 |
| 任务3 | 📖 第3章学习打卡 | 提交你生成的社团推荐数据及模型训练结果 |
| 任务4 | 📖 第4章学习打卡 | 提交你的职业预测系统运行截图 |
| 任务5 | 📖 第5章学习打卡 | 分享你的学习反思与收获 |
## 7. 共创与贡献
欢迎所有学习者参与贡献!
**贡献方式**
- 提交 Issue 反馈问题或建议
- 提交 Pull Request 完善内容
- 分享您的学习经验
## 8. 许可说明
本课程暂无指定许可证。课程创建者可后续添加 LICENSE 文件。
**推荐许可证选项**MIT / Apache 2.0 / CC BY-SA 4.0 / MulanPSL-2.0

31
docs/chapter1.md Normal file
View File

@ -0,0 +1,31 @@
# 第1章激发——提出感兴趣的话题
## 1.1 你是否有过这样的迷茫?
作为一名大学生,我对未来充满期待,却也时常感到迷茫。面对纷繁复杂的专业方向和职业选择,我不知道自己真正适合什么。
> "未来的职业世界将越来越个性化AI可以帮助你发现潜在的职业倾向。"
> —— 生涯规划讲座老师
这句话让我产生了强烈的好奇。AI是怎么做到的它真的能"认识"我吗?
## 1.2 我的疑问
带着对AI职业预测的好奇我提出了几个核心问题
- **AI是怎么"认识"我的?** 它如何理解一个人的能力、兴趣和特质?
- **AI是怎么"做比较"的?** 它如何将我与成千上万的职业案例进行匹配?
- **AI为什么能"预测"** 它的预测依据是什么,背后的逻辑是什么?
- **AI的预测准吗** 我能否信任一个AI给我的职业建议
## 1.3 探索目标
如果我想理解甚至尝试自己构建一个简单的AI职业预测工具我该从哪里开始思考它的核心工作原理到底是什么
带着这些问题,我决定开启一段探索之旅。
## 1.4 本章思考题
1. 你对AI职业预测有什么看法你相信AI能帮你找到适合的职业吗
2. 除了职业预测你还见过哪些AI应用的例子它们是怎么工作的
3. 如果你要设计一个AI系统来预测职业你觉得需要哪些信息

56
docs/chapter2.md Normal file
View File

@ -0,0 +1,56 @@
# 第2章探索——发现问题本质
## 2.1 向AI寻求引导
面对"AI如何预测职业"这个既令人兴奋又充满未知的问题我一时感到无从下手。我决定向AI寻求专业的引导。
**我的提问:**
> 你是一位资深的人工智能教育专家,擅长用生活化的类比为初学者解释复杂概念。我需要理解"AI进行职业预测"这个问题的本质。请暂时不要使用任何专业术语,帮我理解一个非人类的系统是如何完成"职业推荐"这项任务的。
## 2.2 AI的回答虚拟职业导师
DeepSeek的回答让我豁然开朗——我们可以将AI职业预测系统想象成一个**"虚拟职业导师"**,它通过三步完成预测:
### 第1步倾听你的个人画像
通过你的自我描述,获取你当前在各项能力、兴趣和特质上的情况。
### 第2步启动高效的模式匹配
在"经验数据库"中,快速找出历史上与你当前个人画像高度相似的那些"学长学姐"群体。
### 第3步提供统计参考建议
分析相似群体的职业分布,基于庞大的案例库给出数据驱动的趋势参考。
## 2.3 我的理解
经过思考我理解了AI预测职业的本质
1. **并非神秘"玄学"**,而是数据驱动的经验归纳与模式匹配
2. 它将抽象的职业规划问题,转化成了一个可以用**"海量案例"**和**"模式比对"**来解决的工程问题
## 2.4 关键问题浮现
理解原理后,我发现了三个需要解决的关键问题:
1. **如何获取"个人画像"** —— 如何将人的抽象特征转化为计算机能处理的"数字语言"
2. **如何建立"案例库"** —— 如何获取并组织高质量的"职业案例库"
3. **如何进行"模式匹配"** —— 如何让计算机从数据中自动发现规律
## 2.5 构建系统的三层面框架
通过与AI的深入对话我梳理出了从零构建职业预测系统的完整框架
### 层面一:数据准备
- 如何获取并组织高质量的"职业案例库"
- 如何将人的抽象特征转化为计算机能处理的"数字语言"
### 层面二:规律分析
- 如何让计算机从数据中自动发现"什么样的人适合什么职业"的规律?
### 层面三:应用设计
- 如何让用户方便地输入信息,并让系统清晰、友好地输出建议?
## 2.6 本章思考题
1. 用你自己的话向一个朋友解释AI职业预测是怎么工作的
2. "数据驱动"和"规则驱动"有什么区别?你觉得哪个更智能?
3. 你能想到生活中还有哪些问题可以用"数据+模式匹配"的方式来解决?

226
docs/chapter3.md Normal file
View File

@ -0,0 +1,226 @@
# 第3章拓展——学习知识与技能
## 3.1 数据准备 —— 从零开始生成模拟数据
### 3.1.1 数据从哪里来?
我需要为"AI职业预测系统"准备数据——一个结构化表格,包含多个特征(如各种能力分数、兴趣分数)和一个职业标签。但目前我没有现成的数据。
经过与AI的讨论我了解到有三种可行的方案
| 方案 | 特点 | 优点 | 缺点 |
|:----:|------|------|------|
| ① 公开数据集 | 数据真实,可直接使用 | 权威可靠 | 需学习数据预处理,不一定贴合需求 |
| ② 自行调查收集 | 数据贴合研究目标 | 真实可控 | 耗时耗力,样本量有限 |
| ③ 编程生成模拟数据 | 快速生成大量数据 | 学习曲线平缓,可立即实践 | 数据是模拟的,非真实 |
**推荐方案:编程生成模拟数据** —— 学习曲线最平缓,概念理解最深刻,可立即实践。
### 3.1.2 与AI高效协作的技巧
与AI的有效协作关键在于将模糊的想法转化为具体、清晰、可执行的技术指令。一个有效的生成数据需求描述通常包括以下要素
| 要素 | 说明 | 示例 |
|------|------|------|
| **任务目标** | 我要用这段代码完成什么? | 生成一份用于职业预测的模拟数据集 |
| **数据规格** | 数据需要多少条?有哪些特征? | 1000条数据5个特征0-100的整数 |
| **生成逻辑** | 数据间的内在规则是什么? | "技术研发"标签的人,逻辑能力应较高 |
| **输出要求** | 最后需要看到什么结果? | 显示数据概览,保存为.csv文件 |
### 3.1.3 准备运行环境
对于初学者,推荐使用 **Miniconda + Jupyter Notebook** 的组合:
**安装步骤:**
```bash
# 第1步安装Miniconda官网下载安装包
# 第2步创建专用环境
conda create -n py_learn python=3.11
conda activate py_learn
# 第3步安装Jupyter Notebook
pip install jupyter
# 第4步安装项目所需库
pip install pandas scikit-learn joblib
```
**启动Jupyter Notebook**
```bash
conda activate py_learn
jupyter notebook
```
### 3.1.4 实践:生成"社团推荐"模拟数据
**需求描述:**
> 请帮我编写一个Python程序生成模拟的"学生-社团匹配"数据集。
> - 数据量500条
> - 特征logic_score, art_score, social_score均为0-100整数
> - 标签:辩论社、舞蹈团、志愿者协会
> - 生成规则:根据常识设定(如逻辑能力突出者更可能属于辩论社)
> - 输出打印数据基本信息保存为club_data.csv
**AI生成的代码核心逻辑**
```python
import numpy as np
import pandas as pd
# 1. 定义数据规模
n_samples = 500
# 2. 生成三项能力分数
logic_scores = np.random.randint(30, 95, n_samples)
art_scores = np.random.randint(25, 90, n_samples)
social_scores = np.random.randint(40, 98, n_samples)
# 3. 基于能力分数分配社团(有规律但加入随机噪声)
# 4. 创建DataFrame并保存为CSV
df.to_csv('club_data.csv', index=False, encoding='utf-8-sig')
```
**运行结果示例:**
```
正在生成500条社团推荐数据...
数据生成完成共500条记录
社团分布:
辩论社 240
舞蹈团 186
志愿者协会 74
数据已保存为club_data.csv
```
---
## 3.2 规律分析 —— 训练机器学习模型
### 3.2.1 计算机如何学习?
人类专家和计算机的学习过程其实非常相似:
| 人类专家的成长路径 | 计算机的学习过程 |
|-------------------|-----------------|
| ① 观察案例:看大量成功人士的成长轨迹 | ① 输入数据:给它大量"人物特征-职业方向"的配对数据 |
| ② 寻找模式:注意到"逻辑能力强的人多成为工程师" | ② 寻找统计模式:用数学方法找出特征与职业之间的统计关联 |
| ③ 总结规则:形成"如果A且B那么可能是C"的判断规则 | ③ 建立预测规则:形成一套"决策规则集"(称为"模型" |
| ④ 实践验证:用新人的信息做预测,看是否准确 | ④ 验证与优化:用新数据测试规则准确性,不断改进 |
### 3.2.2 完整的机器学习流程
从数据到模型的六个关键步骤:
```
① 数据准备 → ② 选择算法 → ③ 划分数据 → ④ 训练模型 → ⑤ 评估模型 → ⑥ 应用模型
```
| 步骤 | 说明 |
|:----:|------|
| ① 数据准备 | 收集并整理好结构化的训练数据 |
| ② 选择算法 | 选择一种学习方法(如决策树、随机森林) |
| ③ 划分数据 | 将数据分为训练集80%和测试集20% |
| ④ 训练模型 | 用训练集"教"计算机学习规律 |
| ⑤ 评估模型 | 用测试集"考"模型,检验学习效果 |
| ⑥ 应用模型 | 用学好的模型对新数据进行预测 |
### 3.2.3 实践:训练"社团推荐"预测模型
**需求描述:**
> 我需要用机器学习方法从数据中学习规律数据文件club_data.csv特征列logic_score, art_score, social_score标签列club。这是一个分类任务使用随机森林算法训练模型、评估效果、分析特征重要性。
**AI生成的代码核心逻辑**
```python
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import joblib
# 1. 加载数据
df = pd.read_csv('club_data.csv')
# 2. 准备特征和标签
X = df[['logic_score', 'art_score', 'social_score']]
y = df['club']
# 3. 划分数据集80%训练20%测试)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42)
# 4. 选择并训练模型(随机森林)
model = RandomForestClassifier()
model.fit(X_train, y_train)
# 5. 评估模型
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
# 6. 分析特征重要性
feature_importance = model.feature_importances_
# 7. 保存模型
joblib.dump(model, 'club_recommendation_model.pkl')
```
**运行结果示例:**
```
模型评估结果:
准确率87.00%
特征重要性分析:
logic_score: 0.371
art_score: 0.421
social_score: 0.209
模型已保存为club_recommendation_model.pkl
```
---
## 3.3 应用程序开发 —— 构建命令行交互程序
### 3.3.1 从模型到应用
如何将这个智能模型包装成一个可用的应用,让其他人也能方便地使用?
对于初学者,最直接的方式是构建一个**命令行交互程序**。它不追求华丽的界面,而是专注于实现"输入-处理-输出"的核心逻辑。
### 3.3.2 实践:运行"社团推荐"应用程序
**程序功能模块:**
```
① load_model() → 加载训练好的模型文件
② get_user_input() → 获取用户输入的能力分数
③ predict_club() → 使用模型预测最适合的社团
④ display_result() → 展示推荐结果和置信度
```
**运行结果示例:**
```
模型加载成功!
欢迎使用社团推荐系统!
请输入逻辑推理能力分数(0-100)90
请输入艺术创意能力分数(0-100)70
请输入社交协作能力分数(0-100)88
【推荐结果】
根据你的能力特征,系统推荐你加入:**辩论社**
推荐信心度80.5%
【能力分析】
逻辑推理90分
艺术创意70分
社交协作88分
建议:你的逻辑和社交能力突出,非常适合参加辩论活动!
是否继续推荐?(y/n)n
感谢使用社团推荐系统,再见!
```
## 3.4 本章思考题
1. 为什么我们需要将数据分为训练集和测试集?只用训练集不行吗?
2. 特征重要性分析中art_score的权重最高0.421),这说明什么?
3. 如果你要向朋友解释"随机森林"算法,你会怎么比喻?
EOF
echo "chapter3 done"

128
docs/chapter4.md Normal file
View File

@ -0,0 +1,128 @@
# 第4章执行——动手解决问题
## 4.1 从社团推荐迈向职业预测
在上一章中,我们通过"社团推荐"这个小项目,完整走通了"数据准备→模型训练→应用构建"的流程。现在,让我们把这个经验应用到更大的挑战上——**构建一个真正的职业预测系统**。
## 4.2 生成模拟职业数据集
### 需求描述
基于霍兰德职业兴趣理论,我需要生成一份用于职业倾向预测的模拟数据集:
| 项目 | 规格 |
|:----:|------|
| 数据量 | 1500条 |
| 特征维度 | 4个维度共16个特征 |
| 生成逻辑 | 基于霍兰德职业兴趣理论设定合理规则 |
| 目标变量 | 5类职业标签 |
**5类职业标签**
1. 技术专家
2. 研究学者
3. 创意人才
4. 商业精英
5. 社会服务
**16个特征维度**
| 维度 | 特征 |
|:----:|------|
| 学术能力 | 逻辑推理、数学能力、语言表达、研究能力 |
| 技能特长 | 编程能力、设计能力、分析能力、沟通能力 |
| 个人特质 | 责任心、开放性、协作性、抗压能力 |
| 兴趣动机 | 技术兴趣、艺术兴趣、管理兴趣、服务兴趣 |
### AI生成代码的核心逻辑
```python
import numpy as np
import pandas as pd
# 1. 生成1500条数据
n_samples = 1500
# 2. 生成特征数据,使用不同的分布增强区分度
data = {}
# 学术能力维度
data['逻辑推理'] = np.random.normal(70, 15, n_samples).clip(20,100).astype(int)
data['数学能力'] = np.random.normal(65, 18, n_samples).clip(20,100).astype(int)
data['语言表达'] = np.random.normal(68, 16, n_samples).clip(20,100).astype(int)
data['研究能力'] = np.random.normal(65, 20, n_samples).clip(20,100).astype(int)
# ... 更多特征生成 ...
# 3. 根据理论规则生成标签加入4%的随机性模拟真实世界
# 4. 创建DataFrame并保存
df.to_csv('career_data.csv', index=False, encoding='utf-8-sig')
```
### 运行结果
```
正在生成1500条职业预测数据...
数据生成完成共1500条记录
职业分布:
社会服务 460
商业精英 340
研究学者 277
技术专家 232
创意人才 191
```
## 4.3 构建交互式职业预测系统
### 系统需求
基于刚生成的职业预测数据集career_data.csv构建一个完整的交互式职业预测系统
1. **数据准备**:加载数据集,划分为训练集和测试集
2. **模型训练**:使用随机森林算法训练分类模型
3. **交互设计**创建命令行交互界面引导用户输入16项能力分数
4. **预测功能**:根据用户输入预测最适合的职业方向
5. **结果展示**:显示预测职业、置信度、能力分析
### 程序处理逻辑
```
① 数据准备 → ② 模型训练 → ③ 交互设计 → ④ 预测功能 → ⑤ 结果展示
```
### 运行结果示例
```
模型准确率76.00%
职业倾向预测系统
请为以下能力打分0-100分
1. 逻辑推理能力100
2. 数学能力80
3. 语言表达能力60
4. 研究能力60
5. 编程能力100
6. 设计能力50
7. 分析能力50
8. 沟通能力20
9. 责任心30
10. 开放性30
11. 协作性50
12. 抗压能力70
13. 技术兴趣100
14. 艺术兴趣20
15. 管理兴趣20
16. 服务兴趣20
预测结果:技术专家
置信度83.7%
```
## 4.4 实践成果
通过本章的实践我在AI的协同下成功地构建了一个能够从数据中学习并预测职业倾向的AI模型完整经历了从数据准备、规律学习到模型应用的 **"赋予系统智能"** 全过程。
## 4.5 本章思考题
1. 模型准确率76%,你觉得这个水平够用吗?什么场景下可以接受,什么场景下不行?
2. 如果让你增加更多特征来提升预测准确率,你会加入哪些特征?
3. 模拟数据和真实数据有什么区别?如果用真实数据训练,你觉得结果会更好还是更差?

58
docs/chapter5.md Normal file
View File

@ -0,0 +1,58 @@
# 第5章评价——反思与总结
## 5.1 回顾探索之旅
这次围绕"职业预测"的探索是一次完整的5E学习实践。通过从提问、探索到亲手构建系统的全过程我不但弄明白了AI预测职业的底层逻辑更关键的是我真实体验了如何将一个大问题拆解、转化为AI能理解并协助解决的具体任务。
## 5.2 我的三大收获
### 收获一:角色的根本转变
我从一个迷茫的**"提问者"**,变成了清晰的**"构建者"**。
- 开始时AI怎么预测职业它真的能"认识"我吗?
- 结束时:我理解了数据、模型、预测的完整流程,并且亲手构建了一个能用的系统
### 收获二:验证了"以用促学"的高效
- 为了生成数据 → 去学"结构化思维"
- 为了训练模型 → 去理解"机器学习"基本概念
- 为了构建应用 → 去体验"输入-处理-输出"的软件设计
知识因需而学,格外牢固。
### 收获三摸到了与AI协作的门道
我不必精通所有技术,但必须善于**清晰地定义问题和规划路径**。与AI的有效协作关键在于将模糊的想法转化为具体、清晰、可执行的技术指令。
## 5.3 清醒地看到边界
当然,我也认识到了工具的局限:
| 方面 | 我们的模型 | 现实世界 |
|:----:|:----------:|:---------:|
| 数据 | 模拟生成,规律明确 | 真实数据,噪声多、偏差大 |
| 特征 | 16个预设维度 | 数百个复杂维度,难以量化 |
| 预测 | 基于统计规律 | 还需考虑个人意愿、社会环境等 |
| AI角色 | 理性的"数据分析师" | 无法替代感性的"内心声音" |
**AI是理性的"数据分析师",但无法替代我们感性的"内心声音"。**
## 5.4 总结:三条核心信念
这次探索给我的,远不止一个预测程序:
1. **一套"从问题到系统"的可迁移构建思维**
- 面对复杂问题→拆解为可执行步骤→借助AI工具逐步解决
2. **一种"与AI协同解题"的高效工作模式**
- 人类负责定义方向和规划路径AI负责执行技术细节
3. **一个根本信念:学习即解决问题、即认知升级**
- 最好的学习方式,就是动手解决一个真实的问题
## 5.5 本章思考题
1. 回顾整个探索过程,你最大的收获是什么?哪个环节让你印象最深?
2. 你认为AI在职业规划中应该扮演什么角色完全交给AI决策合适吗
3. 如果让你设计下一个探索项目,你会选择什么主题?为什么?