机器学习第九讲:缺失值填补 → 补全问卷漏填的题目,保证数据完整性

资料取自《零基础学机器学习》
查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


一、问卷漏洞修补比喻 📝(类似材料4中数据集处理逻辑[4])

想象你收集了1000份问卷,但有人漏填了年龄栏,就像饼干罐里缺了几块饼干。我们通过以下步骤修补:

flowchart TD
    A[收到问卷] --> B{检查缺口}
    B -->|发现5%缺失| C[填补方法选择]
    C --> D["简单方法:取平均数填补"]
    C --> E["智能方法:根据其他特征预测"]
    D & E --> F[验证数据完整性]

二、常见填补工具箱 🧰

示例:某健康问卷缺失体重数据(参考材料4的乱序处理思想[4])

  1. 均值填补法(新手推荐)

    • 已收集80人体重:平均60kg
    • 将缺失的20人体重自动填60kg
      原理类似全班考试缺考按平均分计分
  2. K近邻预测法(智能推荐)
    通过年龄、身高预测缺失体重:

    graph LR
        A[身高1.7m] --> B[类似身高样本]
        C[年龄30岁] --> D[选择最近邻特征]
        B & D --> E[预测体重=65kg]

三、操作风险警示 ⚠️(参考材料1中评估误差[1])

错误操作后果示例正确处理
随意填0值平均体重被拉低失真使用插值或模型预测
删除所有缺失问卷丢失20%有效数据仅删除完全空白问卷[4]
忽略时间序列特性股票数据出现未来信息泄漏仅用历史数据填补[4]

四、代码实战演示 💻(基于材料4的Pandas处理[4])

import pandas as pd

# 加载含缺失值的数据
data = pd.read_csv('health_survey.csv')

# 方法1:均值填补(适合数值型)
data['体重'].fillna(data['体重'].mean(), inplace=True)

# 方法2:模型预测(适合复杂关系)
from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=3)
data[['年龄','身高','体重']] = imputer.fit_transform(data[['年龄','身高','体重']])

五、医疗数据案例 🏥(类似材料2中的分类评估维度[2])

某癌症筛查数据集缺失部分指标:

pie
    title 填补方法选择
    "用同性别平均值" : 45
    "用随机森林预测" : 35
    "删除异常样本" : 20

需验证填补后模型的真正率是否下降(参考材料1中的混淆矩阵评估[1])


六、知识要点总结 📌

  • 保形原则:填补后的数据分布应与原始数据一致[4]
  • 分层验证:检查填补值在不同性别/年龄组的合理性(参考材料2的分类维度[2])
  • 效果追踪:通过模型准确率变化验证填补质量(类似材料1的F1分数评估[1])

目录:总目录
上篇文章:机器学习第八讲:向量/矩阵 → 数据表格的数学表达,如Excel表格转数字阵列
下篇文章:机器学习第十讲:异常值检测 → 发现身高填3米的不合理数据


[1]《零基础学机器学习》的混淆矩阵评估方法
[2]《零基础学机器学习》的分类标准与真值对照
[4]《零基础学机器学习》的Pandas数据清洗流程


kovli
13 声望8 粉丝