如何处理包含过多NAN值的列?

我的训练数据形状为(596000, 58),下图显示了一些特征与特征/行中”NAN”数量的关系,使用了train.isnull().sum()进行统计。

假设每个特征的重要性相同,并且都是分类值,我应该删除cat6和cat8这两列吗?因为cat6中有411792/596000是NaN,而cat8中有266928/596000是NaN。

有没有什么方法可以处理这种情况?还是我必须删除这两列?


输入 [12]: train.isnull().sum()

输出 [12]:

enter image description here


回答:

对于分类特征的缺失值,有几种可能的处理策略:

  • 删除特征;
  • 对于NaN值,设置为该特征中最常见的值;
  • 对于NaN值,设置为新的类别(例如,nan_value);
  • 最复杂的方法是为当前特征创建一个单独的模型来预测缺失值;

哪种方法最合适?需要更深入地分析你的数据。构建一个简单的基线模型并尝试所有方法。这应该有助于回答你的问题。

在你的情况下,看起来cat6和cat8这两个特征对你来说可能没有用,但你仍然需要简短地调查这个问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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