Python数学建模 缺失值与异常值处理

这篇具有很好参考价值的文章主要介绍了Python数学建模 缺失值与异常值处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于Python的数学建模

  • Github仓库:Mathematical-modeling

数据缺失值与异常值处理

缺失值的定义与原因

  1. 定义:缺失值,即存在特征或标签为空值的样本。包含空值的数据会使建模过程陷入混乱,导致不可靠输出。缺少过多的数据也将丢失大量有效信息,使数据模型难以把握数据规律。
  2. 缺失原因
    • 部分信息暂时无法获取
    • 由于人为因素丢失部分信息
    • 部分对象的某个或某些属性不可用

缺失值的处理

生成缺失数据

data = pd.DataFrame({'A':[None,2,3,4,None,6],'B':[4,None,7,10,15,21],'C':[3,6,18,7,10,13]})
data

Python数学建模 缺失值与异常值处理

删除法

  1. 特征删除法:当一个特征缺失“过多”的数据时,对其填充的数据可能是无价值的,因此直接将该指标删除。特征值缺失量的标准无硬性规定,正常缺失30%以上便可以删除变量。
  2. 样本删除法:当含缺失值的样本量在总数据量占比较小时,可以仅删除含缺失值的样本量。
data_1 = data.copy()
data_1 = data_1.dropna(axis=0,how='any') # 以行为参考,如果有空值,就删除该行
data_1

Python数学建模 缺失值与异常值处理

data_1 = data.copy()
data_1 = data_1.dropna(axis=1,how='any') # 以列为参考,如果有空值,就删除该列
data_1

Python数学建模 缺失值与异常值处理

简单填充

  1. 手动填充:填充效果最好,产生的数据偏离最小,当在处理大规模数据时不可行。
  2. 统计填充:若缺失值为数值数据,可以计算其他对象的均值、加权均值或中位数来填补缺失值。若缺失值为分类数据,可以使用众数,选择在其他对象中出现频率最高的值进行填充。
# 均值填充
data_3 = data.copy()
data_3 = data_3.fillna(data_3.mean()) 
# 中位数填充
data_3 = data.copy()
data_3 = data_3.fillna(data_3.median()) 
# 使用前一个数据进行填充
data_3 = data.copy()
data_3 = data_3.fillna(value=None, method='ffill',axis=0) 
# 使用后一个数据进行填充
data_3 = data.copy()
data_3 = data_3.fillna(value=None, method='backfill',axis=0) 
# Sklearn 插值工具
from sklearn.impute import SimpleImputer
# Strategy可以指定填充方式,mean均值填补,median中位数填补,most_frequent众数填补,constant常数填补
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
data_3 = data.copy()
data_3 = imp.fit_transform(data_3)
data_3

Python数学建模 缺失值与异常值处理

插值法

  1. 热卡填充法(就近补齐):对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。通常会找到超出一个的相似对象,在所有匹配对象中没有最好的,而是从中随机的挑选一个作为填充值,不同的问题选用不同的标准来对相似进行判定。但不同的问题可能会选用不同的标准来对相似进行判定,难以定义相似标准,主观因素较多。
  2. KNN最近邻填充
    • 先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。
    • 这个方法要求我们选择k的值(最近邻居的数量),以及距离度量。
    • KNN既可以预测离散属性(加权投票)也可以预测连续属性(加权平均)。
from sklearn.impute import KNNImputer

imputer = KNNImputer(missing_values=np.nan, 
                     n_neighbors=2, # 用于插补的相邻样本数。
                     weights='distance') # 用于预测的权重函数
data_4 = data.copy()
data_4 = imputer.fit_transform(data_4)
data_4

Python数学建模 缺失值与异常值处理

  1. 多重插补
    • 在处理缺失值时,可以通过链式方程的多重插补(MICE,Multiple Imputation by Chained Equations)估算缺失值。从技术上讲,任何能够推理的预测模型都可以用于MICE。
    • miceforest库可以实现随机森林的链式方程式(MICE)多重插补,具有快速、内存利用率高的特征,无需太多设置即可插入缺失的分类和数值数据,并且具有一系列可用的诊断图。
import miceforest as mf
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = pd.concat(load_iris(as_frame=True,return_X_y=True),axis=1)
iris.rename({"target": "species"}, inplace=True, axis=1)
iris['species'] = iris['species'].astype('category')
# 引入缺失数据
iris_amp = mf.ampute_data(iris,perc=0.25,random_state=1991)
iris_amp

Python数学建模 缺失值与异常值处理

# 初始化插补模型
kernel = mf.ImputationKernel( 
  iris_amp,
  datasets=5, # 将datasets设置为5,创建多个插补数据集
  save_all_iterations=True,
  random_state=666
)
# MICE算法进行2次迭代
kernel.mice(2) 
# 直接从内核中获取已插值的数据集
completed_dataset = kernel.complete_data(dataset=0, inplace=False)
completed_dataset

Python数学建模 缺失值与异常值处理

异常值检测

  1. 箱线图
from matplotlib import pyplot as plt
# 加载鸢尾花数据集
iris = pd.concat(load_iris(as_frame=True,return_X_y=True),axis=1).iloc[:,0]
_ = plt.boxplot(iris)

Python数学建模 缺失值与异常值处理

# 生成异常值
iris_1 = iris.copy()
iris_1[4]=14
_ = plt.boxplot(iris_1)

Python数学建模 缺失值与异常值处理
2. 3 σ \sigma σ原则(拉依达准则)

def three_sigma(data, n=3):
    """
    data: DataFrame某一列
    """
    rule = (data.mean() - n * data.std() > data) | (data.mean() + n * data.std() < data) 
    index = np.arange(data.shape[0])[rule]
    outrange = data.iloc[index]
    return outrange

# 异常值检测
print(three_sigma(iris,n=3))

Python数学建模 缺失值与异常值处理

# 生成异常值
iris_1 = iris.copy()
iris_1[4]=14
print(three_sigma(iris_1,n=3))

Python数学建模 缺失值与异常值处理文章来源地址https://www.toymoban.com/news/detail-456324.html

到了这里,关于Python数学建模 缺失值与异常值处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 数学建模——数据预处理

    在数学建模时,经常遇到数据的预处理,那么会有一些什么情况呢,跟着北海老师总结了他的内容~希望对大家有所帮助! 缺失值 比赛提供的数据,发现有些单元格是null或空的 缺失太多:例如调查人口信息,发现“年龄”这一项缺失了40%,就直接把该项指标删除 最简单处理

    2024年02月01日
    浏览(35)
  • 【数学建模】数据预处理

    数学建模是将实际问题转化为数学模型来解决的过程,而数据预处理是数学建模中非常重要的一步。以下是为什么要进行数据预处理的几个原因: 数据质量:原始数据往往存在噪声、异常值、缺失值等问题,这些问题会对建模结果产生负面影响。通过数据预处理,可以去除噪

    2024年02月09日
    浏览(42)
  • 数学建模--数据预处理

    目录 一、数据统计 1、行列式的最大元素和最小元素 2、求向量的平均值和中值  3、对矩阵做排序  二、数据优化(数据残缺值和异常值的处理) 1、数据残缺 ①插值 ②拟合  ③邻近替换 ④KNN算法填充 2、数据异常 ①拉依达准则 ②替换异常值 3、数据变换 ①0-1标准化 ②z-

    2024年02月01日
    浏览(44)
  • 数学建模:数据的预处理

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 常见的数据变换的方式:通过某些简单的函数进行数据变换。 x ′ = x 2 x ′ = x x ′ = log ⁡ ( x ) ∇ f ( x k ) = f ( x k + 1 ) − f ( x k ) begin{aligned}x^{prime}=x^2 \\\\begin{aligned}x^{prime}=sqrt{x}end{aligned} \\\\x\\\'=log(x) \\\\nabla fleft(x_{k})right.=f

    2024年02月11日
    浏览(40)
  • 【数学建模+数据处理类】2021数学建模国赛B题 乙醇偶合制备C4烯烃

    对附件1中每种催化剂组合,分别研究乙醇转化率、C4烯烃的选择性与温度的关系,并对附件2中350度时给定的催化剂组合在一次实验不同时间的测试结果进行分析。 step1:对实验数据进行探索性分析 数据的预处理(A11的缺失) 可视化、数据关系展示 包括画出各个因变量(不同

    2024年02月16日
    浏览(44)
  • 数据预处理方法整理(数学建模)

    这篇文章主要是整理了一些作者在各种建模比赛中遇到的数据预处理问题以及方法,主要针对excel或csv格式的数据,为后续进行机器学习或深度学习做前期准备 导入库和文件,这里使用的是绝对路径,可改为相对路径 传入的为csv格式的文件,如果是xlsx格式的文件,建议先使

    2024年02月14日
    浏览(54)
  • 【数学建模】数据处理与可视化

    两类基本对象 ndarray(N-dimensional Array Object):存储单一数据类型的多维数组 ufunc(Universal Funciton Object):对数组进行处理的通用函数 数组创建 向array函数传入列表/元组 利用arange、linspace、empty等函数生成数组 数组属性 数组元素索引 array数组和list列表的区别:list中的元素可以不

    2024年01月18日
    浏览(44)
  • 数学建模Matlab之数据预处理方法

    本文综合代码来自文章 作者通常首先判断是否具有异常值,因为如果有异常值的话,咱们就会剔除异常值,使其变成缺失值,然后再做缺失值处理会好很多。 对于上面的异常值检验法做讲解与扩展: 1. Mean 三倍标准差法(3σ原则) 描述 :在正态分布数据中,任何一个数值如

    2024年02月08日
    浏览(47)
  • 数学建模day17-SVD和图形处理

    注:本文源于数学建模学习交流相关公众号观看学习视频后所作         奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,其在图形学、统计学、推荐系统、信号处理等领域有重要应用。本讲我们将介绍奇异值分解在图形压缩中的运用,并将简单介

    2024年02月22日
    浏览(35)
  • chatgpt赋能python:Python和数学建模:如何参与数学建模比赛

    数学建模比赛通常是学术界和工业界一起组织的比赛,旨在让学生掌握实际问题的建模方法以及如何处理数据、分析和解决实际问题。Python是一个流行的编程语言,广泛应用于数据科学和数学建模领域,因其简单易学、高效和可扩展性而备受好评。在本文中,我们将介绍如何

    2024年02月09日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包