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

这篇具有很好参考价值的文章主要介绍了【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 KNNImputer

data = 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 包装,以及是否指定了列名。通常建议使用第一种方式,以确保填充后的数据与原始数据结构一致,并且避免潜在的错误。文章来源地址https://www.toymoban.com/news/detail-838854.html

到了这里,关于【Educoder数据挖掘实训】插值填充法处理遗漏值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据挖掘(2.3)--数据预处理

    目录 三、数据集成和转换 1.数据集成  2.数据冗余性  2.1 皮尔森相关系数 2.2卡方检验  3.数据转换 四、数据的规约和变换 1.数据归约 2数据离散化 数据集成是将不同来源的数据整合并一致地存储起来的过程 。 不同 来源 的数据可能有 不同的格式、不同的元信息和不同的表示

    2024年02月02日
    浏览(40)
  • 数据挖掘(2.2)--数据预处理

    目录   二、数据描述 1.描述数据中心趋势 1.1平均值和截断均值  1.2加权平均值 1.3中位数(Median)和众数(Mode) 2.描述数据的分散程度 2.1箱线图 2.2方差和标准差 2.3正态分布 3.数据清洗 3.1数据缺失的处理 3.2数据清洗 描述数据的方法,包括描述数据中心趋势的方法如 均值、中位

    2024年02月01日
    浏览(38)
  • 数据挖掘 实验一、数据预处理

    一、 实验目的: (1) 熟悉 VC++编程工具和完全数据立方体构建、联机分析处理算法。 (2) 浏览拟被处理的的数据,发现各维属性可能的噪声、缺失值、不一致性等,针对存在的问题拟出采用的数据清理、数据变换、数据集成的具体算法。 (3) 用VC++编程工具编写程序,实

    2024年02月08日
    浏览(48)
  • 【数据挖掘与人工智能自然语言处理】自然语言处理和人工智能:如何利用自然语言处理技术进行数据挖掘

    作者:禅与计算机程序设计艺术 随着互联网和大数据时代的到来,数据挖掘已成为各个行业的热门话题。数据挖掘的核心在于发现数据中的有价值信息,而自然语言处理(NLP)技术是实现这一目标的重要手段。本文旨在通过自然语言处理技术进行数据挖掘,为数据挖掘提供一

    2024年02月05日
    浏览(103)
  • 【数据挖掘 | 数据预处理】缺失值处理 & 重复值处理 & 文本处理 确定不来看看?

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月07日
    浏览(72)
  • 数据挖掘 | 实验一 数据的清洗与预处理

    1)了解数据质量问题、掌握常用解决方法; 2)熟练掌握数据预处理方法,并使用Python语言实现; PC机 + Python3.7环境(pycharm、anaconda或其它都可以) 清洗与预处理的必要性 在实际数据挖掘过程中,我们拿到的初始数据,往往存在缺失值、重复值、异常值或者错误值,通常这

    2023年04月08日
    浏览(48)
  • 数据挖掘学习——数据预处理方法代码汇总(python)

    目录 一、归一化处理方法 (1)min-max方法(离散归一化) (2)零-均值规范化方法 (3)小数定标规范化 二、插值法 (1)拉格朗日插值法 三、相关性分析 (1)pearson相关性系数 (2)spearman相关性系数 四、主成分分析(PCA) 归一化常用方法有: (1)min-max方法(离散归一化

    2024年02月08日
    浏览(71)
  • 【数据挖掘】时间序列模型处理指南(二)

            本文是一个系列文章的第二部分,本文将用股票数据进行时间序列分析为例,对时间分析的方法、过程,进行详细阐述。         在文章第一部分种:【数据挖掘】时间序列模型处理(一)_无水先生的博客-CSDN博客         我们将使用新德国基金(GF)的历

    2024年02月12日
    浏览(38)
  • 数据预处理在数据挖掘中的重要性

    数据挖掘作为从大量数据中提取有用信息和知识的过程,其结果的准确性和可靠性直接受到数据质量的影响。因此,数据预处理在数据挖掘中扮演着至关重要的角色。让我们探讨数据质量对数据挖掘结果的影响,并介绍常见的数据预处理方法以及它们如何提高数据挖掘的效果

    2024年03月20日
    浏览(47)
  • 数据挖掘的云计算与大规模数据处理

    数据挖掘是指从大量数据中发现新的、有价值的信息和知识的过程。随着互联网和人工智能技术的发展,数据量不断增加,这使得数据挖掘变得越来越重要。云计算和大规模数据处理技术为数据挖掘提供了强大的支持,使得数据挖掘能够在更短的时间内获得更好的结果。 本文

    2024年04月14日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包