Python · Machine Learning · Deep Learning

石头剪刀布检测

2026 暑期 Python 课程项目合集,覆盖 Python 基础语法、机器学习回归预测、学生行为数据分析,以及基于 YOLO11n 的石头剪刀布手势识别。

Rock Paper Scissors Detection Demo
Project 1

Python 基础练习

14 个入门练习:数据类型、流程控制、函数、列表与字典等基础语法全覆盖。

Project 2-1

加州房价预测

随机森林回归预测加州房价中位数,R² = 0.805。验证收入与地理位置是核心影响因素。

Project 2-2

学生行为分析

Kaggle 真实数据集,分析学习时间、屏幕时间等对 CGPA 的影响,多模型对比。

Project 3

YOLO11n 手势识别

🪨📄✂️ 实时检测剪刀/石头/布,验证集 mAP50 = 0.940,毫秒级推理。

Project 1

Python 程序设计基础

入门级 Python 编程练习,零第三方依赖

数据类型

  1. 1.1.py — 正整数平方
  2. 1.2.py — 格式化输出录取信息
  3. 1.3.py — 直角三角形斜边长

运算符 & 表达式

  1. 2.1.py — 两点间欧几里得距离
  2. 2.2.py — 三位数各位立方和
  3. 2.3.py — 字母出现次数(不区分大小写)

流程控制 & 函数

  1. 3.1-3.2 — 成绩等级 / 字符类型
  2. 4.1-4.2 — 位数判断 / 阶乘求和
  3. 5.1-5.2 — 函数封装与数学计算
  4. 6.1-6.2 — 列表推导式 / 字典映射
Project 2-1

加州房价预测 — 随机森林回归

scikit-learn · California Housing Dataset

数据集

California Housing — scikit-learn 内置数据集

  • 样本量:20,640 条街区数据
  • 特征数:8 个(收入中位数、房龄、房间数、人口、地理位置等)
  • 目标:MedHouseVal(房价中位数,$100K)

模型评估

MSE 0.2552
RMSE 0.5052
0.8053

特征重要性 Top 4

MedInc(收入中位数) > AveOccup(平均居住人数) > Latitude / Longitude(地理位置) > HouseAge

收入水平是房价的最强预测因子,地理位置的重要性反映了加州不同区域的房价差异。

Python scikit-learn Random Forest Pandas Matplotlib
Project 2-2

学生数字行为与学习表现分析

Kaggle 真实数据集 · 线性回归 vs 随机森林

数据集

Student Lifestyle and Academic Performance(Kaggle)

  • 12 个字段:Age, Branch, Study_Hours, Sleep_Hours, Screen_Time, Gym, Diet, Attendance, Stress, Residence, Internal_Marks, CGPA
  • 目标变量:CGPA(绩点,0~10)
  • 排除 Internal_Marks 避免数据泄漏

数据清洗流程

  • 字段筛选 → 去重
  • 数值字段:中位数填充缺失值
  • 分类字段:众数填充
  • 异常值过滤(年龄、学习时间等合理范围)
  • 分类变量:独热编码(drop_first)

可视化分析(6 张图表)

屏幕时间分布

右偏态分布,大部分学生每日屏幕时间 3~8 小时

学习时间 vs CGPA

清晰的正相关,学习 6~8h/天的学生 CGPA 普遍更高

特征重要性 Top 3

学习时间 > 出勤率 > 屏幕时间

Python Linear Regression Random Forest Pandas Seaborn EDA
Project 3

石头剪刀布手势识别 — YOLO11n

🪨📄✂️ Ultralytics · PyTorch · 目标检测

数据集

rock-paper-scissors-sxsw(Roboflow v11)

  • 总计 15,874 张图片
  • 训练集 14,966 / 验证集 588 / 测试集 320
  • 3 个类别:Paper(布)、Rock(石头)、Scissors(剪刀)
  • 输入尺寸:640×640

数据增强

每张原图生成 7 个增强版本:

  • 水平翻转(50%)、随机旋转 ±12°
  • 剪切 ±2°、亮度/曝光 ±25%
  • 高斯模糊 0~1.5px、椒盐噪声 1%

训练配置

模型YOLO11n (2.58M params)
Epochs50
Batch16
优化器AdamW
训练耗时~3.07h
GPURTX 5060 (8GB)

评估结果

验证集

mAP50(全部) 0.940
mAP50-95 0.697
精确率 (P) 0.942
召回率 (R) 0.891
推理速度 < 2.1ms

测试集

mAP50(全部) 0.934
mAP50-95 0.693
精确率 (P) 0.898
召回率 (R) 0.920

各类别性能

📄 Paper

验证 mAP500.936
测试 mAP500.904

🪨 Rock

验证 mAP500.943
测试 mAP500.951

✂️ Scissors

验证 mAP500.940
测试 mAP500.947

应用模式

单张图片推理

对任意手势照片进行识别,识别结果以边界框 + 标签形式标注,保存到输出目录。

predict.py

实时摄像头检测

调用系统摄像头(1280×720)实时捕获,每帧推理毫秒级,窗口显示 FPS 帧率,按 Q 键退出。

detect.py

评估脚本

验证集评估、测试集评估、数据集下载工具,完整覆盖训练到部署全流程。

evaluate.py / test.py
Python PyTorch YOLO11n Ultralytics OpenCV Roboflow CUDA