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

时间:2017-12-20 20:08:27

标签: python pandas numpy recode

我使用二进制变量构建了一个模型来表示分类变量。我正在尝试向我们提供与我在研究环境中使用的生产数据相同的分箱和重新编码。在我将其重新编码为二进制变量之前,我使用pyodc来查询和提取与我的开发数据具有相同元素的实时数据。我希望从我的开发数据中保留相同的名称,以便能够重用我所有的旧代码。当我开发这个时,我使用标签编码器将字符串更改为数字,然后使用类似于下面的代码来生成二进制变量。由于类别的数量变化很大,因此生产数据证明这很困难。我该如何保持一致?

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

0 个答案:

没有答案
相关问题