当前位置: 首页 > news >正文

K近邻(KNN) 方法来填补缺失值

本文会讲解如何用knn方法填充DataFrame里面的Nan值

一、填充逻辑

1.拆分样本把所有样本分成两类:

完整样本:该行所有特征无缺失
残缺样本:该行存在至少 1 个 NaN,需要补值

2.计算欧氏距离

距离计算规则(只拿共同有效特征算距离)假设样本 A 有缺失,对比样本 B:只挑选A、B 两行都不为空的那些采样点(列),用这些对应数值计算欧式距离,距离越能代表两条波形整体相似度。

3.选取举例最小的前n_neighbors 个样本作为邻居

筛选近邻对残缺样本,算出它和所有完整样本的距离,取距离最小的前 n_neighbors 个样本作为邻居。

4.加权计算

加权计算填充值(weights='distance')距离越近的邻居权重越高

5.填充数据

逐缺失位置循环填充一行里多个 NaN 不会一次性全填,逐个缺失坐标重复上面步骤,全部补完输出完整数值矩阵。

二、读取数据

import pandas as pd
from sklearn.impute import KNNImputer
file_path = "../附件二(测试集) - 副本.xlsx"
df = pd.read_excel(file_path, sheet_name='测试集')

三、提取波形数据

把列名单独存一个变量,然后用这个变量作为参数传输到df这个DataFrame里面提取数据,再把列名的类型换成'字符串',方便后面模型训练(因为模型KNNImputer要求列为字符串类型)

wave_cols = df.columns[4:]
wave_data = df[wave_cols]
wave_data.columns = wave_data.columns.astype(str)

四、定义KNN模型

imputer = KNNImputer(n_neighbors=5,#填补每个缺失值时,KNN会选取5个最相似的邻居样本。weights='distance'#邻居对填补的贡献按距离的倒数加权
)

五、填充数据

wave_filled = imputer.fit_transform(wave_data
)

六、将数据替换回原表

首先还是深拷贝原数据到变量df_knn,然后把df_knn里面的列换成已经填充好的列

df_knn = df.copy()
df_knn[wave_cols] = wave_filled
# 保存
df_knn.to_excel("KNN填补结果.xlsx",index=False
)
print("完成")
#以上代码是把行当做一个样本,列是采样点,缺失值从行中找相近的列来填补
http://www.jsqmd.com/news/1014681/

相关文章:

  • 2026年朝鲜旅游靠谱机构排行及避坑指南 - 互联网科技品牌测评
  • DBPanel:Go 语言自研 Linux 服务器管理面板,轻量安全且极速部署,基础功能长久免费!
  • 2026年腾讯云618大促零基础步骤:OpenClaw如何安装?Token Plan配置与大模型接入流程
  • 元器件柜子器件(6×10)
  • MPC8260 I2C控制器与并行I/O端口配置详解:从缓冲描述符到引脚复用
  • 5、Zookeeper-分布式锁
  • 如何免费激活IDM完整版:3分钟永久解锁极速下载体验
  • 5000+戴森球计划工厂蓝图:从零到星际帝国的建造指南
  • 阳江市黄金回收三家门店实地探店综合测评 - 靖昱黄金回收
  • SonnetDB 多模型能力更新:向量、全文搜索、S3 对象桶与消息队列场景总览
  • 深度剖析智能自动化框架:基于图像识别的鸣潮游戏革命性解决方案
  • 用 C# 在 SonnetDB 中写入 VECTOR 并执行 KNN 检索
  • 数据说话!南京市GEO优化公司推荐排名 | 2026年6月TOP8硬核横评与避坑指南 - 936品牌测评网
  • StarRailCopilot:崩坏星穹铁道全自动脚本终极指南,解放双手的智能游戏助手
  • Fast-GitHub:彻底解决国内开发者访问GitHub的终极加速方案
  • 合肥专业配镜门店排行:5家连锁门店实测对比 - 奔跑123
  • AI时代如何防止大脑‘钙化’:认知代偿的科学应对
  • 在macOS上玩转Xbox手柄:360Controller驱动完全指南
  • [智能体-401]:项目:Make 平台 AI Agent 工作流程详解
  • VSCode配置文件
  • PCL2内存优化深度解析:3大核心技术让Minecraft流畅运行
  • 终极免费方案:Wand-Enhancer让你的游戏修改器突破时间限制
  • 湛江市黄金回收三家门店实地探店综合测评 - 靖昱黄金回收
  • [智能体-404]:应用 - Make平台搭建智能体与AI原生的低代码智能体平台的比较
  • 3步快速解决AutoCAD字体缺失问题:FontCenter终极指南
  • PCIe | 辅助信号与复位机制
  • MySQL高可用实战:用ProxySQL和MaxScale搭建读写分离集群,哪个更适合你的业务?
  • 从‘端口被占’到丝滑部署:一套预防为主的端口管理策略(附Nmap扫描实战)
  • 计算机Java毕设实战-融合智能推荐算法的卫生健康管理系统的设计与实现 基于 SpringBoot 的个性化健康推荐系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 3分钟搞定Windows安卓应用安装:APK-Installer让跨平台如此简单!