pandas get_dummies 如何记住哪个值变成了哪个新类别? [复制]
Posted
技术标签:
【中文标题】pandas get_dummies 如何记住哪个值变成了哪个新类别? [复制]【英文标题】:pandas get_dummies how to remember which value become which new category? [duplicate] 【发布时间】:2018-02-14 19:12:51 【问题描述】:使用 get_dummies 方法一次对多个分类变量进行一次热编码似乎很容易,但是如何记住哪个是哪个,以便我的测试数据与我的训练数据具有相同的特征?例如:
我的训练数据集有一个分类特征:
X
cat
dog
lion
lion
在get_dummies之后,我得到了这样的东西:
X_1 X_2 X_3
1 0 0
0 1 0
0 0 1
0 0 1
训练模型后,我准备测试我的神奇模型,这里是测试数据:
X
cat
cat
lion
如果我应用 pd.get_dummies 方法,我会得到这样的结果:
X_1 X_2
1 0
1 0
0 1
这将与我的训练数据特征不一致,我根本无法将我的模型应用于测试数据。
有什么建议可以让我得到以下类似的吗?
X_1 X_2 X_3
1 0 0
1 0 0
0 0 1
如何获得适合和转换的功能?同样,我有超过 50 个分类特征,我不能将 LabelEncoder 和 One_Hot_Encoder 一个一个地应用到它们。
有什么建议吗?谢谢。
【问题讨论】:
短版:预先定义类别并将 dtype 转换为类别。现在,当您调用 get_dummies 时,pandas 将为所有类别生成列,即使它们不存在于该特定数据集中。 哦哇...有一个骗子...而且解决方案很棒 @ayhan,如果有少数特征,你提到的姿势中的答案非常方便,如果有超过 50 个类别特征怎么办......还有其他选择吗? 你可以使用LabelBinarizer 另外,您需要考虑的另一件事是您所描述的相反情况?其中测试数据的分类变量比火车多。 【参考方案1】:我对所有数据使用 get_dummies,然后将其分为训练和测试。
【讨论】:
有时这不是一个可行的选择......然后呢? 不,在现实世界中不起作用以上是关于pandas get_dummies 如何记住哪个值变成了哪个新类别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 pandas get_dummies 函数应用于有效数据集?
将“pandas.get_dummies”转换到新数据的简单方法?
特征提取pd.get_dummies() 详解(One-Hot Encoding)