我的数据集中有一列在9700行中包含了约275个类别。如果使用get_dummies会生成很多列。这样做是好做法吗?还是有其他技术可以处理这种情况?(在这里,我需要确定公司在市场上销售产品时可以设定的最低价格。)
df2['Market_Category'].nunique()
输出: 275
回答:
拥有很多列并不是一个好主意,这会在训练过程中导致问题。阅读关于维度灾难的文章。为了处理这个问题,你有一些选择:
- 首先,我会统计每个类别的数量:
df2['Market_Category'].value_counts()
如果你有很多类别只重复了几次(例如某些类别的数量在10000个样本中少于10次),你可以为它们创建一个名为其他的新类别,而不是为每个类别创建一列。这样做不会影响性能,因为你并没有丢失太多信息;并且可以减少列的数量。
- 接下来,如果在前一步之后,你仍然得到很多列(例如如果所有类别的数量相同),你可以使用一些降维技术,比如PCA。简单来说,它们会找到最佳的列保留下来,并丢弃其余的列。
希望我回答了你的问题。