在 train/test 拆分之前或之后分解列?

Factorize column before or after train/test split?

我正在为分类问题开发神经网络。我有一个带有文本 id 列的数据集,我使用 pandas.factorize() 函数将字符串 id 转换为 int id。

我的名为 'customer_id' 的文本 ID 列如下所示:

      customer_id   
0       Z59FTQD 
1       HMP29SK 
2       VPP29SK
3       VPP29SK 
.. .. .. .. .. 
1500    0JP2FAB
15001   ZJP29AK

我使用后:

dataset['customer_num_id'] = pd.factorize(dataset['customer_id'])[0] + 1

创建一个名为 'customer_num_id' 的新列来将字符串 ID 表示为 int 值以输入我的神经网络模型,我的新列如下所示:

      customer_id  customer_num_id  
0       Z59FTQD      1
1       HMP29SK      2
2       VPP29SK      3
3       VPP29SK      3
.. .. .. .. .. 
1500    0JP2FAB      1500
1501    ZJP29AK      1501

我想在大约 80% 的数据上训练我的模型,并在剩余的 20% 上测试它。

我的问题是:我应该在将数据集拆分为训练集和测试集之前或之后对其进行因式分解吗?

我会 encode/factorize 在你把它分成测试和训练数据集之前。 这样您就可以确保在两个拆分中进行一致的因式分解。

我还建议调查 sklearn.preprocessing.LabelEncoder