sklearn.impute.KNNImputer插值寻找近邻的原理

前言

最近预处理数据需要使用插值来填充; 首先是sklearn.impute.SimpleImputer方法, strategy 只有mean, median等; 我需要相邻的邻居值来做插值, 所以选中了sklearn.impute.KNNImputer

疑问

代码:imputer = KNNImputer(n_neighbors=2)

Data Before performing imputation
    Maths  Chemistry  Physics  Biology
0   80.0       60.0      NaN     78.0
1   90.0       65.0     57.0     83.0
2    NaN       56.0     80.0     67.0
3   95.0        NaN     78.0      NaN


After performing imputation
 [[80.  60.  68.5 78. ]
 [90.  65.  57.  83. ]
 [87.5 56.  80.  67. ]
 [95.  58.  78.  72.5]]

Maths第三列(Nan)是怎么算出来的, 我一开始用了两个最邻近的数值, 怎么算都不对; 后来看了youtube才恍然大悟:KNNImputer说的近邻并不是Math这列的物理近邻, 而是 用其他的科目(Chemistry, Physics等)去计算euclidean distance; 根据euclidean distance来判断邻居, 所以邻居应该是person0, person3 !
直观上理解就是: 如果某两个人其他科目的成绩都接近, 那么这两个人即是相似的, 他们的Maths成绩很可能接近;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

euclidean distance计算方式

*KNN_imputer原理视频(传不上来图片, 大家只能自己看视频了):
https://www.youtube.com/watch?v=AHBHMQyD75U

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ModuleNotFoundError: No module named 'sklearn.impute'是一个错误提示,意思是找不到名为'sklearn.impute'的模块。根据提供的引用内容,可以看出该错误可能是由于未正确安装所需的库或模块导致的。 解决此错误的方法是确保已正确安装了所需的模块。根据引用的描述,你成功使用了pip安装了一个名为sklearn的模块。然而,引用提到了一个名为sckit-learn的模块,这个模块是在创建TensorFlow-GPU环境时自动下载的。因此,可能是你安装的模块名称不正确导致了该错误。 为了解决这个问题,你可以尝试使用pip install scikit-learn命令来安装正确的模块。如果安装成功,你应该可以成功导入并使用from sklearn.impute import SimpleImputer这个代码。 总结起来,ModuleNotFoundError: No module named 'sklearn.impute'错误可能是由于未正确安装所需的模块导致的。你可以尝试使用pip install scikit-learn命令来安装正确的模块来解决此问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深度学习解决ModuleNotFoundError: No module named ‘sklearn](https://blog.csdn.net/wang_jiezeng/article/details/129861973)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值