【Educoder数据挖掘实训】插值填充法处理遗漏值

【Educoder数据挖掘实训】插值填充法处理遗漏值

开挖

这关的介绍非常详细,只要看懂了基本就没有问题。
所谓插值其实就是根据已有的数据构造出函数,然后用这个函数来计算遗漏的数据。
比如这个题目中介绍的拉格朗日插值以及 K K K近邻。
有关拉格朗日插值在这里做一点儿介绍:
一直函数 f ( x ) f(x) f(x) n + 1 n+1 n+1个插值节点 a ≤ x 0 < x 1 < . . . < x n ≤ b a\le x_0 < x_1 <... < x_n \le b ax0<x1<...<xnb上的函数值 f ( x 0 ) , f ( x 1 ) , . . . , f ( x n ) f(x_0), f(x_1),...,f(x_n) f(x0),f(x1),...,f(xn),求构造一个次数不超过 n n n的插值函数多项式 L n ( x ) L_n(x) Ln(x) L n ( x i ) = y i = f ( x i ) L_n(x_i) = y_i = f(x_i) Ln(xi)=yi=f(xi)
给出构造:
L n ( x ) = ∑ i = 0 n l i ( x ) y i L_n(x) = \sum\limits_{i = 0} ^nl_i(x)y_i Ln(x)=i=0nli(x)yi
其中 l i ( x ) l_i(x) li(x)被称为 n n n次插值基函数。
l i ( x j ) = [ x j = = x i ] l_i(x_j) = [x_j == x_i] li(xj)=[xj==xi]
l i ( x ) = ∏ j = 0 , j ≠ i n x − x j x i − x j l_i(x) = \prod\limits_{j = 0, j\neq i}^n \frac{x - x_j}{x_i - x_j} li(x)=j=0,j=inxixjxxj
易知这个构造方程是显然成立的而且次数不会超过 n n n次。
关于 K K K就是用函数 K N N I m p u t e r KNNImputer KNNImputer函数用欧几里得距离寻找最近邻,相当于最近邻算法的具体实现,不多赘述。
代码如下:

import pandas as pd
import numpy as np
from scipy.interpolate import lagrange
import sklearn
from sklearn.impute import KNNImputerdata = pd.read_csv("src/death.csv", index_col='Unnamed: 0')data = data.dropna(axis=1, thresh=data.shape[0] * 0.2)
data = data.dropna(axis=0, thresh=data.shape[1] * 0.2)cols = '2007/12/20'
########## Begin ##########
# 求出'2007/12/20'列的缺失行索引
na_index = data.index[data[cols].isna()]# 将'2007/12/20'列的缺失行使用前后三个数进行拉格朗日法替换s = data[cols]
for i in na_index :y = s[list(range(i - 3, i)) + list(range(i + 1, i + 1 + 3))]y = y[y.notnull()]data[cols][i] = lagrange(y.index, list(y))(i)print('2007/12/20 列的缺失值使用拉格朗日法替换为:', data[cols][i])########## End ##########na_index = pd.isna(data['FIPS'])
print('替换前:\n', data[['Lat', 'FIPS', 'Long_']][na_index])########## Begin ##########
# 使用 'Lat', 'FIPS', 'Long_' 三列进行 K 近邻计算
# data[['Lat', 'FIPS', 'Long_']] = data[['Lat', 'FIPS', 'Long_']].fillna(method='bfill')
imputer = KNNImputer(n_neighbors = 1)
# data[['Lat', 'FIPS', 'Long_']] = imputer.fit_transform(data[['Lat', 'FIPS', 'Long_']])
data[['Lat','FIPS','Long_']] = pd.DataFrame(imputer.fit_transform(data[['Lat','FIPS','Long_']]),columns=[['Lat', 'FIPS', 'Long_']])
print('替换后:\n', data[['Lat', 'FIPS', 'Long_']][na_index])########## End ##########

依然给出补充
这个题目中间有两行代码,分别是:

# data[['Lat', 'FIPS', 'Long_']] = imputer.fit_transform(data[['Lat', 'FIPS', 'Long_']])
data[['Lat','FIPS','Long_']] = pd.DataFrame(imputer.fit_transform(data[['Lat','FIPS','Long_']]),columns=[['Lat', 'FIPS', 'Long_']])

很疑惑这两行代码具体的区别是什么。
在大多数情况下是没区别的,但是第二种写法会更稳定,保证修改的行就是标记为 c o l u m n s columns columns的行。
两者的区别在于对填充后的数据是否进行了 D a t a F r a m e DataFrame DataFrame 包装,以及是否指定了列名。通常建议使用第一种方式,以确保填充后的数据与原始数据结构一致,并且避免潜在的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM-3

HotSpot虚拟机对象 我在网上看了很多相关的文章&#xff0c;发现在创建对象和对象的结构中内容都不太一样&#xff0c;一些关键字也很不同&#xff0c;于是我通过参考《深入理解Java虚拟机》这本书&#xff0c;自己总结了一篇。 1.对象的创建 当JVM收到一条创建对象的字节码…

用定时器在单片机中实现一次性回调函数执行

在单片机中实现一个异步的一次性定时器&#xff0c;通常可以使用硬件定时器模块或者嵌入式操作系统中的定时器功能。以下是一个基于硬件定时器的实现方法&#xff0c;适用于没有操作系统的情况&#xff1a; 1.硬件定时器配置&#xff1a; 选择单片机中的一个硬件定时器&#…

计算机网络 路由器 链路层 MTU 最大传送单元 网络层

一个链路层数据帧能够承载的最大数据量&#xff0c;被称为最大传送单元&#xff08;MTU&#xff09;。 因为IP数据报&#xff0c;被封装在链路层的帧中&#xff0c;因此链路层的MTU&#xff0c;严格地限制了IP数据报的长度&#xff0c;并且在IP数据报的源与目的路径上的各段链…

全面的 DevSecOps 指南:有效保护 CI/CD 管道的关键注意事项

数字化转型时代带来了对更快、更高效、更安全的软件开发流程的需求。DevSecOps&#xff1a;一种将安全实践集成到 DevOps 流程中的理念&#xff0c;旨在将安全性嵌入到开发生命周期的每个阶段 - 从代码编写到生产中的应用程序部署。DevSecOps 的结合可以带来许多好处&#xff0…

交叉编译x264 zlib ffmpeg以及OpenCV等 以及解决交叉编译OpenCV时ffmpeg始终为NO的问题

文章目录 环境编译流程nasm编译x264编译zlib编译libJPEG编译libPNG编译libtiff编译 FFmpeg编译OpenCV编译问题1解决方案 问题2解决方案 总结 环境 系统&#xff1a;Ubutu 18.04交叉编译链&#xff1a;gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu 我的路径/opt/toolch…

NLP:bert下载与使用

没办法&#xff0c;模型精度还是不够&#xff0c;只能暂时弃用text2vec。然后我在github上发现了中文文本处理的老大哥&#xff1a;bert python使用bert可以参考这篇博客&#xff1a;博客 但是篇博客又出现了上一节的问题&#xff1a; We couldnt connect to https://hugging…

数据库相关理论知识(有目录便于直接锁定相关知识点+期末复习)

一&#xff0c;数据模型&#xff0c;关系型数据模型&#xff0c;网状模型&#xff0c;层次模型 1.数据库模型是用来描述和表示现实世界中的事物、概念以及它们之间的关系的工具&#xff0c;但是并不是越专业越好&#xff0c;还要平衡它的模型的复杂性、通用性和成本效益等因素…

【Vue】vue文件外通过ref获取元素

问题描述 我在abc.js写HomeView.vue的逻辑代码我要在abc.js里&#xff0c;获取HomeView.vue组件里ref为test的元素 码 abc.js 导出test import { ref } from vue const test ref() export {test } HomeView.vue 引入test注意&#xff1a; ref不能加冒号&#xff0c;也就…

Java零基础入门-Comparable vs Comparator(上)

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流学习&#xff0c;互相学习&#xff0c;才能成长的更快&#xff0c;对吧。 我是一名java开发&#xff0c;所以日常接触到最多…

System是什么?为什么不能直接输出null?

在看学习下面的知识前&#xff0c;得先对java核心类库有个大致的了解&#xff0c;详情可参考链接 java基本概念-扩展点-CSDN博客 1、System 1.1 System是什么&#xff1f; System是一个类&#xff0c;它包含了一些有用的属性和方法。 1.2 System实现的功能 &#xff08;1&…

linux下如何hook第三方播放器的视频数据?

背景 作为显卡生产商,当用户使用我们的显卡硬解码播放视频时,如果出现比如花屏等问题,为了快速确定问题原因,我们需要一个工具来帮助判断出问题是出在原始视频端,亦或者是应用程序端,亦或者是显卡端。因此我们需要一种方法,来对目标播放器程序进行监控,并捕获到视频源的…

【深度学习】换脸新科技,InstantID: Zero-shot Identity-Preserving Generation in Seconds

论文&#xff1a;https://arxiv.org/abs/2401.07519 代码:https://github.com/InstantID/InstantID demo&#xff1a;https://huggingface.co/spaces/InstantX/InstantID 文章目录 1 引言2 相关工作2.1 文本到图像扩散模型2.2 主题驱动的图像生成2.3 保持ID的图像生成 3 方法3.…

简易线程池的实现

Worker的实现 总体来说我们首先需要实现一个Worker线程类&#xff0c;让他的线程实例拿取任务然后执行任务。 //worker主要是从jobs中拿工作&#xff0c;拿不到等&#xff0c;拿到了执行。class Worker implements Runnable{private volatile boolean running true;Overrid…

工程经济学一

工程项目&#xff1a; 工程项目是指为完成某一独特的产品、服务或任务所做的一次性努力。又称建设项目、基本建设项目、投资建设项目或建设工程项目。 工程项目前评价&#xff1a; 是项目建议书和可行性研究阶段进行的&#xff0c;是项目开工前对 拟建项目的必要性和可能性进…

删除、创建、验证Kafka安装自带的__consumer_offsets topic

删除Kafka自带Topic 一般情况下&#xff0c;你删除Kafka自带的__consumer_offsets topic&#xff0c;会报错提示不能删除。 倔强的你直接找到zookeeper删掉了它&#xff0c;list查看确实没有这个topic了&#xff0c;但是这会导致消费者和偏移量无法记录。 创建Kafka自带的Topi…

zabbix5监控tomcat

zabbix tomcat客户端配置 1、配置tomcat catalina.sh文件 CATALINA_OPTS"$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port12345 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse -Djav…

smart-doc 社区 Committer 晋升公告

我们非常荣幸地宣布&#xff0c;经过 PMC 委员会的提名和讨论&#xff0c;社区成员李星志&#xff08;GitHub ID: netdied&#xff09;、陈琪&#xff08;GitHub ID: chenqi146&#xff09;和李兵&#xff08;GitHub ID: abing22333&#xff09;正式晋升为同程旅行 smart-doc 开…

Vue3全家桶 - Vue3 - 【3】模板语法(指令+修饰符 + v-model语法糖)

一、模板语法 主要还是记录一些指令的使用和vue2的区别&#xff1b;vue3指令导航&#xff1b; 1.1 v-text 和 v-html 指令的区别&#xff1a; v-text&#xff1a; 更新元素的文本内容&#xff1b;v-text 通过设置元素的 textContent 属性来工作&#xff0c;因此它将覆盖元素…

数据结构:静态链表(编程技巧)

链表的元素用数组存储&#xff0c; 用数组的下标模拟指针。 一、理解 如果有些程序设计语言没有指针类型&#xff0c;如何实现链表&#xff1f; 在使用指针类型实现链表时&#xff0c;我们很容易就可以直接在内存中新建一块地址用于创建下一个结点&#xff0c;在逻辑上&#x…

3、设计模式之工厂模式

工厂模式是什么&#xff1f;     工厂模式是一种创建者模式&#xff0c;用于封装和管理对象的创建&#xff0c;屏蔽了大量的创建细节&#xff0c;根据抽象程度不同&#xff0c;主要分为简单工厂模式、工厂方法模式以及抽象工厂模式。 简单工厂模式 看一个具体的需求 看一个…