📑 查看全课大纲(第 101 / 101 节)
- 1.数据分析基本概念
- 2.学习数据分析的一般路线
- 3.数据分析的流程
- 4.数据类型
- 5.环境部署(1)
- 6.环境部署(2)
- 7.课程介绍
- 8.TXT文件操作
- 9.JSON文件操作
- 10.CSV文件操作
- 11.Excel文件操作
- 12.数据库及SQL常用语法
- 13.数据库基本操作
- 14.数据库多表连接
- 15.实战:欧洲职业足球数据库分析
- 16.爬虫简介
- 17.URL管理模块
- 18.网页下载模块
- 19.网页解析模块(1)
- 20.网页解析模块(2)
- 21.Scrapy简介
- 22.Scrapy使用步骤(1)
- 23.Scrapy使用步骤(2)
- 24.Scrapy使用步骤(3)
- 25.Scrapy使用步骤(4)
- 26.实战:获取国内城市空气质量指数数据
- 27.NumPy和SciPy介绍
- 28.多维数组
- 29.多维数组操作
- 30.NumPy的常用方法
- 31.向量化介绍
- 32.向量化及通用函数
- 33.实战:2016美国大选分析
- 34.数据结构-Series
- 35.数据结构-DataFrame
- 36.数据结构-Index
- 37.Series的索引操作
- 38.DataFrame的索引操作
- 39.索引操作总结
- 40.运算与对齐
- 41.函数应用操作(1) -- map
- 42.函数应用操作 (2) -- apply applymap
- 43.文件读写操作
- 44.排序操作
- 45.数据清洗--处理缺失数据
- 46.数据清洗--处理重复数据
- 47.数据清洗--替换数据
- 48.常用统计方法(1) -- describe quantile
- 49.常用统计方法(2) -- sum mean median count
- 50.常用统计方法(3) -- max min idxmax idxmin
- 51.常用统计方法(4) -- mad var std cumsum
- 52.实战:全球食品数据分析
- 53.层级索引
- 54.分组与聚合介绍
- 55.分组操作(1) -- GroupBy对象及常用聚合操作
- 56.分组操作(2) -- 自定义分组及聚合操作
- 57.透视表介绍
- 58.透视表操作
- 59.数据规整(1) -- 数据合并concat
- 60.数据规整(2) -- 数据连接merge
- 61.数据重构(3) -- 数据重构stack unstack
- 62.实战:互联网电影资料库分析
- 63.探索性数据分析EDA介绍
- 64.EDA的目的
- 65.EDA常用工具
- 66.Matplotlib绘图基本介绍
- 67.Matplotlib画布
- 68.散点图和柱状图的绘制
- 69.直方图的绘制
- 70.矩阵绘图
- 71.子图的使用
- 72.Matplotlib颜色、标记、线型
- 73.Matplotlib坐标刻度、标签、图例、标题
- 74.Seaborn介绍
- 75.数据集分布可视化(1) -- 单变量分布、双变量分布
- 76.数据集分布可视化(2) -- 变量关系可视化
- 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
- 78.交互式数据可视化工具Bokeh介绍
- 79.Bokeh绘制散点图、柱状图、盒子图、弦图
- 80.Bokeh绘制常用图形元素
- 81.D绘图 -- mplot3d
- 82.D曲线可视化
- 83.D散点图可视化
- 84.D柱状图可视化
- 85.Pandas绘图
- 86.实战:Lending Club借贷数据探索性分析及可视化
- 87.机器学习介绍及应用场景
- 88.机器学习建模介绍 (1) -- 分类
- 89.机器学习建模介绍 (2) -- 回归
- 90.机器学习建模介绍 (3) -- 聚类
- 91.机器学习分类
- 92.机器学习工具scikit-learn
- 93.使用scikit-learn的流程
- 94.数据集准备及划分
- 95.模型选择
- 96.数据预处理及特征工程
- 97.过拟合与欠拟合
- 98.模型调参介绍
- 99.模型调参方法
- 100.模型测试及评价
- 101.实战:通过移动设备行为数据预测性别和年龄
实战:通过移动设备行为数据预测性别和年龄
约 26 分钟
第8章综合实战:移动设备传感器数据挖掘与用户行为状态智能识别分类全流程
小象实战讲义 · Python数据分析实战
在系统学习了机器学习的算法流派(分类、回归、聚类)、scikit-learn 统一 API 架构、防泄露数据拆分、特征工程预处理(标准化/独热编码)、过拟合诊断、交叉验证、网格调参以及多维评估指标(混淆矩阵/F1/AUC)之后,本节我们将迎来全套数据分析体系的最终收官压轴大实战——《基于移动设备传感器时序特征的用户行为状态智能识别预测(Human Activity Recognition,简称 HAR)》。我们将使用智能手机内置加速度计与陀螺仪的多维传感器数据,完整走通从数据清洗、特征缩放、候选模型基准比对、GridSearchCV 自动调优,到混淆矩阵诊断与生产级模型落盘的工业级机器学习端到端全流程。
💡 核心导读
- 实战业务目标:根据手机三轴加速度与角速度特征,高精度识别用户的 4 种典型运动状态(静止站立、平地行走、快速跑步、上下楼梯)。
- 机器学习工程五步全流程:
- 加载并探查高维多传感器特征数据集;
train_test_split(stratify=y)严谨防泄露分层拆分;
- 构建
ColumnTransformer/StandardScaler特征标准化流水线;
- 构建
- 使用
GridSearchCV对随机森林分类器进行超参数寻优;
- 使用
- 生成精细化混淆矩阵热力图与分类报告(Classification Report)评估交付。
- 高内聚可直接执行的端到端代码实战。
1. 传感器数据集构建与流水线规范
为了保证代码零依赖可复现,我们在内存中构建包含真实物理特征规律的移动设备样本:
┌─────────────────────────────────────────────────────────────┐
│ 移动设备传感器特征与行为状态 │
├─────────────────────────────────────────────────────────────┤
│ 1. acc_x, acc_y, acc_z : 三轴加速度均值与方差 │
│ 2. gyro_x, gyro_y : 陀螺仪角速度方差 │
│ 3. activity (Label) : 0=静止站立, 1=步行, 2=跑步, 3=楼梯 │
└─────────────────────────────────────────────────────────────┘import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.metrics import classification_report, confusion_matrix
# 1. 模拟生成 400 条移动设备传感器运动特征数据集
np.random.seed(42)
n_per_activity = 100
# 状态 0: 静止站立 (加速度波动极小, 接近重力加速度 9.8)
act_0 = np.random.normal(loc=[0.1, 9.8, 0.1, 0.05, 0.05], scale=0.1, size=(n_per_activity, 5))
# 状态 1: 平地步行 (加速度适度周期波动)
act_1 = np.random.normal(loc=[1.2, 10.5, 0.8, 0.8, 0.7], scale=0.4, size=(n_per_activity, 5))
# 状态 2: 快速跑步 (加速度极大剧烈震荡)
act_2 = np.random.normal(loc=[3.5, 13.0, 2.5, 2.8, 2.5], scale=0.8, size=(n_per_activity, 5))
# 状态 3: 上下楼梯 (垂直 Z 轴加速度与角速度显著异常)
act_3 = np.random.normal(loc=[1.8, 11.2, 3.2, 1.5, 1.9], scale=0.5, size=(n_per_activity, 5))
X = np.vstack([act_0, act_1, act_2, act_3])
y = np.array([0] * n_per_activity + [1] * n_per_activity + [2] * n_per_activity + [3] * n_per_activity)
feature_cols = ["acc_x_var", "acc_y_mean", "acc_z_var", "gyro_x_var", "gyro_y_var"]
target_names = ["静止站立", "平地步行", "快速跑步", "上下楼梯"]
print("=== 1. 传感器行为特征数据集构建就绪 ===")
print(f"• 样本总数: {X.shape[0]} 行 | 特征数量: {X.shape[1]} 列 | 类别数: {len(target_names)} 类")2. 数据切分、网格寻优与全面评估交付
我们使用分层拆分、标准差预处理,并通过 GridSearchCV 寻找最优随机森林分类器。
# 2. 严谨分层切分训练集与测试集 (8:2)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
# 3. 特征标准化预处理
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 4. 网格搜索自动化寻优随机森林超参数
param_grid = {
"n_estimators": [30, 60, 100],
"max_depth": [3, 5, 8],
"min_samples_split": [2, 4]
}
grid = GridSearchCV(RandomForestClassifier(random_state=42), param_grid, cv=4, scoring="accuracy", n_jobs=-1)
grid.fit(X_train_scaled, y_train)
best_model = grid.best_estimator_
print(f"\n=== 2. GridSearchCV 最优参数: {grid.best_params_} (CV 准确率: {grid.best_score_:.2%}) ===")
# 5. 在未知测试集上进行最终推断评估
y_pred = best_model.predict(X_test_scaled)
print("\n=== 3. 最终多分类性能评估报告 (Classification Report) ===")
print(classification_report(y_test, y_pred, target_names=target_names))
cm = confusion_matrix(y_test, y_pred)
print("=== 4. 混淆矩阵 (Confusion Matrix) ===")
print(pd.DataFrame(cm, index=[f"实际_{n}" for n in target_names], columns=[f"预测_{n}" for n in target_names]))📝 动手练一练
综合实战思考题:在移动设备行为预测项目中,如果发现模型在“平地步行”和“上下楼梯”两个类别之间存在轻微混淆误判(查看混淆矩阵发现有少量样本相互误报),在特征工程阶段可以增加什么物理传感器特征来有效提升区分度?
👉 点击查看参考答案
参考答案: 可以引入气压计(Barometer)的海拔高度变化率特征,或者提取 Z 轴加速度的频域能量谱(FFT 快速傅里叶变换主频特征)。平地步行的垂直高度变化为 0,而上下楼梯会产生持续的单向海拔高度爬升/下降,结合气压高度特征能够近乎 100% 完美解耦这两类动作。
综合编程练习:编写代码提取最佳随机森林模型的特征重要性(
feature_importances_),并按重要性从高到低排序打印。👉 点击查看参考答案
参考答案:
import pandas as pd import numpy as np importances = pd.Series(best_model.feature_importances_, index=feature_cols).sort_values(ascending=False) print("传感器特征重要性排行榜:\n", importances.round(4))
本章小结
- 完整打通了从高维物理传感器数据清洗、标准化、建模到评估落地的工业级全流程;
- 综合运用了
train_test_split、StandardScaler与GridSearchCV构建鲁棒算法流水线; - 熟练运用混淆矩阵与 F1-Score 深度定位各分类边界的判别表现,达成了数据分析全套工艺的圆满收官!
📋 行动清单
- 在本地执行示例代码,观察控制台输出并记录关键指标。
- 恭喜你!已学完《Python数据分析与机器学习实战》全书全部 101 节课程讲义!
—— 小象教研组
- 全套课件打包(第1-5章)(ZIP · 12.8MB)下载
- 全套课件打包(第6-8章)(ZIP · 15MB)下载
- 实战数据集:AppleStore 应用商城分析(ZIP · 329KB)下载
- 实战数据集:女性服装电商分析(ZIP · 2.8MB)下载
- Python 数据分析环境搭建指南(PDF · 2MB)下载
- Scrapy 安装教程(PDF · 12.7MB)下载
- 附加实战项目:AppleStore 应用商城数据分析(ZIP · 0.3MB · ipynb + CSV 数据)下载
- 附加实战项目:银行电话营销数据分析(ZIP · 0.4MB · ipynb + CSV 数据)下载
- 附加实战项目:女性服装电商评论数据分析(ZIP · 2.7MB · ipynb + CSV 数据)下载
- 附加实战项目:美国化学学会杂志数据分析(ZIP · 34.2MB · ipynb + SQLite 数据库)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问