如何处理预处理数据中包含大约300K个类别的列?

我的数据集中有一列在9700行中包含了约275个类别。如果使用get_dummies会生成很多列。这样做是好做法吗?还是有其他技术可以处理这种情况?(在这里,我需要确定公司在市场上销售产品时可以设定的最低价格。)

df2['Market_Category'].nunique()

输出: 275


回答:

拥有很多列并不是一个好主意,这会在训练过程中导致问题。阅读关于维度灾难的文章。为了处理这个问题,你有一些选择:

  1. 首先,我会统计每个类别的数量:
df2['Market_Category'].value_counts() 

如果你有很多类别只重复了几次(例如某些类别的数量在10000个样本中少于10次),你可以为它们创建一个名为其他的新类别,而不是为每个类别创建一列。这样做不会影响性能,因为你并没有丢失太多信息;并且可以减少列的数量。

  1. 接下来,如果在前一步之后,你仍然得到很多列(例如如果所有类别的数量相同),你可以使用一些降维技术,比如PCA。简单来说,它们会找到最佳的列保留下来,并丢弃其余的列。

希望我回答了你的问题。

Related Posts

神经网络反向传播代码不工作

我需要编写一个简单的由1个输出节点、1个包含3个节点的…

值错误:y 包含先前未见过的标签:

我使用了 决策树分类器,我想将我的 输入 作为 字符串…

使用不平衡数据集进行特征选择时遇到的问题

我正在使用不平衡数据集(54:38:7%)进行特征选择…

广义随机森林/因果森林在Python上的应用

我在寻找Python上的广义随机森林/因果森林算法,但…

如何用PyTorch仅用标量损失来训练神经网络?

假设我们有一个神经网络,我们希望它能根据输入预测三个值…

什么是RNN中间隐藏状态的良好用途?

我已经以三种不同的方式使用了RNN/LSTM: 多对多…

发表回复

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