em模型补缺失值_缺失值的四种处理方法

一、缺失值产生的原因

缺失值的产生的原因多种多样,主要分为机械原因和人为原因。机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据。

二、缺失值的类型

缺失值从缺失的分布来讲可以分为完全随机缺失,随机缺失和完全非随机缺失。完全随机缺失(missing completely at random,MCAR)指的是数据的缺失是随机的,数据的缺失不依赖于任何不完全变量或完全变量。随机缺失(missing at random,MAR)指的是数据的缺失不是完全随机的,即该类数据的缺失依赖于其他完全变量。完全非随机缺失(missing not at random,MNAR)指的是数据的缺失依赖于不完全变量自身。

从缺失值的所属属性上讲,如果所有的缺失值都是同一属性,那么这种缺失成为单值缺失,如果缺失值属于不同的属性,称为任意缺失。另外对于时间序列类的数据,可能存在随着时间的缺失,这种缺失称为单调缺失。

三、缺失值的处理方法

对于缺失值的处理,从总体上来说分为删除存在缺失值的个案和缺失值插补。对于主观数据,人将影响数据的真实性,存在缺失值的样本的其他属性的真实值不能保证,那么依赖于这些属性值的插补也是不可靠的,所以对于主观数据一般不推荐插补的方法。插补主要是针对客观数据,它的可靠性有保证。

1.删除含有缺失值的个案

主要有简单删除法和权重法。简单删除法是对缺失值进行处理的最原始方法。它将存在缺失值的

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用EM算法处理Excel表进行缺失值的Python代码示例: 首先,我们需要安装pandas库和scikit-learn库: ```python !pip install pandas !pip install scikit-learn ``` 然后,我们需要导入所需的库和数据: ```python import pandas as pd from sklearn.mixture import GaussianMixture # 读取Excel表格 df = pd.read_excel('data.xlsx') ``` 接下来,我们需要定义EM算法函数: ```python def em_impute(data, n_components=4, max_iter=100): """ 使用EM算法进行缺失值 :param data: 数据 :param n_components: 高斯混合模型的个数 :param max_iter: 最大迭代次数 :return: 插后的数据 """ # 复制一份数据 data_copy = data.copy() # 获取数据的行数和列数 n_rows, n_cols = data_copy.shape # 创建高斯混合模型 model = GaussianMixture(n_components=n_components, max_iter=max_iter) # 遍历每一列 for i in range(n_cols): # 获取当前列的数据 col = data_copy.iloc[:, i] # 获取当前列的缺失值 missing = col.isnull() # 如果当前列没有缺失值,则不需要插 if missing.sum() == 0: continue # 将当前列的非缺失值作为训练数据 train_data = col[~missing].values.reshape(-1, 1) # 训练高斯混合模型 model.fit(train_data) # 使用模型预测缺失值 imputed_values = model.predict(col[missing].values.reshape(-1, 1)) # 将预测值填充到缺失位置 data_copy.loc[missing, data_copy.columns[i]] = imputed_values return data_copy ``` 最后,我们可以调用em_impute函数进行缺失值: ```python # 使用EM算法进行缺失值 imputed_data = em_impute(df) # 输出插后的数据 print(imputed_data) ``` 注意:以上代码仅为示例,具体实现方式可能因数据的不同而有所不同。建议根据具体情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值