在多个数据集中以相同的方式将分类变量重新编码为二进制变量

2024-10-05 17:40:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我用二进制变量来表示分类变量,建立了一个模型。我正在尝试使用我在研究环境中对生产数据使用的相同的binning和recodes。我使用pyodc查询和拉取具有与开发数据相同元素的实时数据,然后将其重新编码为二进制变量。我希望在开发数据中保持相同的名称,以便能够重用所有旧代码。当我开发这个程序时,我使用label编码器将字符串更改为数字,然后使用类似下面的代码来生成二进制变量。这在生产数据上证明是困难的,因为类别的数量是高度可变的。如何保持一致?在

le = preprocessing.LabelEncoder()
le.fit(df.NAME_VKORG)
df["NAME_VKORG_Auto"] = le.transform(df.NAME_VKORG)
le.fit(df.NAME_VTWEG)
df["NAME_VTWEG_Auto"] = le.transform(df.NAME_VTWEG)
le.fit(df.NAME_LGMNG)
df["NAME_LGMNG_Auto"] = le.transform(df.NAME_LGMNG)
le.fit(df.NAME_POSNR)
df["NAME_POSNR_Auto"] = le.transform(df.NAME_POSNR)
le.fit(df.NAME_WERKS)
df["NAME_WERKS_Auto"] = le.transform(df.NAME_WERKS)
le.fit(df.NAME_LGORT)
df["NAME_LGORT_Auto"] = le.transform(df.NAME_LGORT)
le.fit(df.NAME_CODE)
df["NAME_CODE_Auto"] = le.transform(df.NAME_CODE)
le.fit(df.NAME_VSTEL)
df["NAME_VSTEL_Auto"] = le.transform(df.NAME_VSTEL)
le.fit(df.NAME_LPRIO)
df["NAME_LPRIO_Auto"] = le.transform(df.NAME_LPRIO)

df.loc[:,"NAME_LGMNG_1"] = np.where(df["NAME_LGMNG_Auto"] == 1,1,0)
df.loc[:,"NAME_LGMNG_2"] = np.where(df["NAME_LGMNG_Auto"] == 2,1,0)
df.loc[:,"NAME_LGMNG_3"] = np.where(df["NAME_LGMNG_Auto"] == 3,1,0)
df.loc[:,"NAME_LGMNG_4"] = np.where(df["NAME_LGMNG_Auto"] == 4,1,0)

#Should be noted there are many more of the above, just used some for 
examples

Tags: 数据nameledfautonp二进制transform