树莓派创意相机实战:从图像处理到嵌入式系统集成
2026/5/11 6:08:06
摘要:缺失值比例法是一种机器学习特征选择技术,用于处理数据集中缺失值比例过高的特征。该方法通过计算各特征缺失比例并设定阈值,剔除高缺失值特征,从而优化模型性能。实施步骤包括计算缺失比例、设定阈值、剔除特征和模型训练。不同缺失比例区间(如<5%、5%-20%、20%-80%、>80%)需采取不同处理策略。该方法虽能节省计算资源、简化模型结构,但也可能导致信息丢失和选择偏差。实际应用中需注意区分缺失类型、避免数据泄露,并根据业务需求灵活调整阈值。
目录
机器学习 —— 缺失值比例法
缺失值比例法的核心原理
缺失值比例法的实施步骤
常见阈值划分与对应策略
示例
输出结果
关键注意事项
缺失值比例法的优势
缺失值比例法的劣势
缺失值比例法(Missing Values Ratio)是机器学习中一种特征选择技术,用于识别并剔除数据集中缺失值占比过高的特征。该技术通过减少模型训练所用的特征数量,避免缺失值导致的偏差问题,进而提升模型性能。
计算数据集中每个特征的缺失值占比,剔除占比超过设定阈值的特征。这是因为缺失值占比高的特征对目标变量的预测价值较低,还可能给模型引入偏差。
- 计算数据集中每个特征的缺失值占比;
- 设定特征缺失值占比的阈值;
- 剔除缺失值占比超过阈值的特征;
- 使用剩余特征训练机器学习模型。
| 缺失比例区间 | 推荐处理策略 | 适用场景说明 |
|---|---|---|
| < 5% | 直接删除缺失样本 | 样本量充足,缺失是随机的,删除后对数据分布影响极小 |
| 5% ~ 20% | 填充缺失值 | 样本量有限,缺失非完全随机;可根据特征类型选均值 / 中位数(数值型)、众数(分类型),或模型预测填充 |
| 20% ~ 80% | 将缺失作为新特征 + 填充 | 缺失可能隐含业务意义(如 “未填写” 本身是一种状态);新增二分类特征(0 = 无缺失,1 = 有缺失),再对原特征填充 |
| > 80% | 直接删除该特征 | 特征有效信息极少,保留会引入大量噪声,对模型无正向贡献 |
以下是在 Python 中实现缺失值比例法的示例代码:
# 导入必要的库 import numpy as np # 加载糖尿病数据集 diabetes = np.genfromtxt(r'C:\Users\Leekha\Desktop\diabetes.csv', delimiter=',') # 定义预测变量(X)和目标变量(y) X = diabetes[:, :-1] y = diabetes[:, -1] # 计算每个特征的缺失值占比 missing_percentages = np.isnan(X).mean(axis=0) # 设定缺失值占比阈值 threshold = 0.5 # 找出缺失值占比超过阈值的特征索引 high_missing_indices = [i for i, percentage in enumerate(missing_percentages) if percentage > threshold] # 从数据集中剔除高缺失值特征 X_filtered = np.delete(X, high_missing_indices, axis=1) # 打印筛选后数据集的形状 print('筛选后数据集的形状:', X_filtered.shape)上述代码对糖尿病数据集执行缺失值比例法,剔除了缺失值占比超过阈值的特征。
运行上述代码后,将得到以下输出:
筛选后数据集的形状: (769, 8)
- 区分缺失类型缺失值分为完全随机缺失(MCAR)、随机缺失(MAR)、非随机缺失(MNAR)。
- MCAR:缺失与特征、标签无关(如数据录入失误),可直接删样本;
- MNAR:缺失与特征本身相关(如低收入人群不愿填写收入),需优先将缺失作为新特征。
- 避免数据泄露填充操作(尤其是用统计量填充)必须在训练集上计算统计量,再用该统计量填充验证集和测试集,否则会引入数据泄露。
- 阈值灵活调整若某特征是核心业务特征(如信用评分模型中的 “逾期次数”),即使缺失比例达 30%,也不宜直接删除,可优先选择模型预测填充。