相关疑难解决方法(0)

一种热编码训练,其值不存在于测试中

我有一个存储为数据帧的训练和测试集。我正在尝试对我的数据集上的标称特征进行 One-hot 编码。但我有以下问题:

  1. 总共有 3 个分类特征,但我不知道每个特征的值是多少,因为数据集很大。
  2. 测试集具有训练集上不存在的值,因此当我进行单热编码时,训练集应该将向量标记为 0 以表示不可见的值。但正如我在 1 中提到的,我不知道所有的功能。
  3. 我发现我可以df = pd.get_dummies(df, prefix_sep='_')用来做一个热编码,该命令适用于所有分类特征,但我注意到它将新特征移到了训练 DataFrame 的末尾,我认为这是一个问题,因为我们不知道哪个特征的索引。还有第 2 个问题,新的火车/集合应该具有相同的索引。

有没有自动的方法来做到这一点?或者图书馆?

编辑

由于下面的答案,我能够对许多功能执行一种热编码。但是下面的代码给出了以下问题:

  1. 我认为scikit-learn剥离列标题并将结果生成为数组而不是数据帧
  2. 由于特征被剥离,我们不知道哪个向量属于哪个特征。即使我执行df_scaled = pd.DataFrame(ct.fit_transform(data2))将结果存储在数据帧中,创建的数据帧df_scaled也没有标题,尤其是在预处理后标题现在更改时。也许sklearn.preprocessing.OneHotEncoder有一种方法可以跟踪新功能及其索引?

python pandas scikit-learn

7
推荐指数
1
解决办法
3739
查看次数

标签 统计

pandas ×1

python ×1

scikit-learn ×1