如何处理包含多种缺失数据的数据集

我在尝试进行初学者机器学习项目Big Mart Sales。这个项目的数据集中包含多种类型的缺失值(NaN),以及需要更改的值(例如,lf -> Low Fat, reg -> Regular 等)。

我目前处理这些数据的方法是为每种需要修复的数据类型创建一个填补器:

from sklearn.impute import SimpleImputer as Imputer# 使值保持一致lf_imputer = Imputer(missing_values='LF', strategy='constant', fill_value='Low Fat')lowfat_imputer = Imputer(missing_values='low fat', strategy='constant', fill_value='Low Fat')X[:,1:2] = lf_imputer.fit_transform(X[:,1:2])X[:,1:2] = lowfat_imputer.fit_transform(X[:,1:2])# 类别变量的NaN值nan_imputer = Imputer(missing_values=np.nan, strategy='most_frequent')X[:, 7:8] = nan_imputer.fit_transform(X[:, 7:8])# 数值变量的NaN值nan_num_imputer = Imputer(missing_values=np.nan, strategy='mean')X[:, 0:1] = nan_num_imputer.fit_transform(X[:, 0:1])

然而,这种方法相当繁琐。是否有更简洁的方式来预处理这个数据集?

此外,令人沮丧的是,imputer.fit_transform()要求输入为二维数组,而我只想修复单列(一维)中的值。因此,我总是不得不使用我想修复的列加上旁边的列作为输入。有没有其他方法可以解决这个问题?谢谢。

这是我数据的一些行: enter image description here


回答:

有一个Python包可以以简单的方式为你完成这项工作,ctrl4ai

pip install ctrl4aifrom ctrl4ai import preprocessingpreprocessing.impute_nulls(dataset)
用法: [arg1]:[pandas dataframe],[method(default=central_tendency)]:[选择中心趋势或KNN]说明: 自动识别列中的分布类型并填补空值注意: 如果数据集很大,KNN会消耗更多的系统内存返回值: 数据框 [对于每个类别值有单独的列]

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注