如何使用Python处理Missing Data

本文探讨了在Python中处理数据缺失值的重要性,特别是在机器学习场景下。通过皮马印度人糖尿病数据集为例,展示了如何识别、标记、删除和估算缺失值。文章提到了删除缺失值行的方法以及使用平均值等方法估算缺失值,同时指出了一些支持缺失值的算法,如k-Nearest Neighbors和决策树。
摘要由CSDN通过智能技术生成

前言

现实世界的数据中常常包含缺失的数据。原因很多,比如观察结果没有记录,或数据损坏。处理缺失的数据很重要,因为许多机器学习算法不支持具有缺失值的数据库。

本教程将讨论如何使用Python处理缺失的数据来进行机器学习。

在这里插入图片描述

您将了解到:

•如何在数据集中标记无效或损坏的值。

•如何从数据集中删除缺失数据的行。

•如何使用数据集的均值估算缺失值。

注意:文章中的例子前提是安装了Python 2或3,Pandas,NumPy和Scikit-Learn的;特别是scikit-learn版本0.18或更高版本。

概述

本教程分为6部分:

Python学习交流Q群:906715085###


•皮马印度人糖尿病数据集:我们在哪里查看已知缺失值的数据集。

•标记缺失值:我们学习如何在数据集中标记缺失值。

•缺少值导致的问题: 机器学习算法如果包含缺少值,将会如何失败。

•删除缺少值的行: 如何删除包含缺失值的行。

•估算缺失值:我们用合理的值替换缺失值。

•允许缺失值的算法:哪些算法允许缺失值。

首先,我们来看看缺少值的示例数据集。

在这里插入图片描述

1、皮马印度人糖尿病数据集

皮马印第安人糖尿病数据集根据现有的医疗信息预测5年内皮马印第安人糖尿病发作的概率。

这是两类(2-class)分组问题,每组的观察标本量不同。共有768个观测值,8个输入变量和1个输出变量。变量名称如下:

0.怀孕次数。

  1. 口服葡萄糖耐量试验中血浆葡萄糖浓度为2小时。

  2. 舒张压(mm Hg)。

  3. 三头肌组织褶厚度(mm)。

  4. 2小时血清胰岛素(μU/ ml)。

  5. 体重指数(kg/ (身高(m))^ 2)。

  6. 糖尿病系统功能。

  7. 年龄(岁)。

  8. 类变量(0或1)。

预测的标准是大约65%的分类精准度。最好结果的分类精度约为77%。

以下列出前5行的样本。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析和机器学习中,缺失值是一个很常见的问题。在处理缺失值之前,我们需要先了解数据集中缺失值的情况和原因,以此来决定如何处理它们。 以下是一些处理缺失值的常见方法: 1. 删除缺失值 这是最简单的方法,直接删除包含缺失值的行或列。但是,这种方法可能会导致数据丢失过多,因此需要谨慎使用。 ```python import pandas as pd # 读取数据集 df = pd.read_csv('data.csv') # 删除包含缺失值的行或列 df.dropna(axis=0) # 删除包含缺失值的行 df.dropna(axis=1) # 删除包含缺失值的列 ``` 2. 填充缺失值 这种方法可以根据数据的分布和特点,选择合适的数值来填充缺失值。比如,可以使用均值、中位数或众数来填充数值型数据的缺失值;使用最常见的类别值来填充类别型数据的缺失值。 ```python import pandas as pd # 读取数据集 df = pd.read_csv('data.csv') # 填充数值型数据的缺失值 df.fillna(df.mean(), inplace=True) # 使用均值填充数值型数据的缺失值 # 填充类别型数据的缺失值 df.fillna(df.mode().iloc[0], inplace=True) # 使用最常见的类别值填充类别型数据的缺失值 ``` 3. 插值填充 这种方法可以根据数据的分布和特点,选择合适的插值方法来填充缺失值。比如,可以使用线性插值、多项式插值或样条插值来填充数值型数据的缺失值。 ```python import pandas as pd # 读取数据集 df = pd.read_csv('data.csv') # 使用线性插值填充数值型数据的缺失值 df.interpolate(method='linear', inplace=True) ``` 4. 随机森林填充 这种方法可以使用随机森林算法来预测缺失值。它可以根据数据集的其他特征,来预测缺失值所应该具有的数值。 ```python from sklearn.ensemble import RandomForestRegressor import pandas as pd # 读取数据集 df = pd.read_csv('data.csv') # 对于需要填充的列,将该列看作预测目标,其他列看作特征 # 将数据集分为已知值和未知值两部分 known = df[df['target'].notnull()] unknown = df[df['target'].isnull()] # 使用随机森林算法来预测缺失值 X_train = known.drop('target', axis=1) y_train = known['target'] X_test = unknown.drop('target', axis=1) rf = RandomForestRegressor() rf.fit(X_train, y_train) y_pred = rf.predict(X_test) # 填充缺失值 df.loc[df['target'].isnull(), 'target'] = y_pred ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值