多标签分类的输入数据创建
Input data creation for Multilabel classification
我正在研究多标签分类问题。 X 中的每个值都是分类值。原始数据如下
ID X1 X2 X3 Y
111 AA LL KK MMM
111 AA LL KK MMM
111 BB LL jj NNN
121 HH DD uu III
121 HH DD yy OOO
121 HH LL aa PPP
我正在尝试将其转换为一个数据框,其中列(X1、X2、X3、Y)中存在的每个唯一值都将成为一个新列,并且每个 ID 都将有一个记录。我试图获得的预期输出是
ID X1_AA X1_BB X1_HH X2_LL X2_DD X3_KK X3_jj X3_uu X3_yy x3_aa Y_MMM Y_NNN Y_III Y_OOO Y_PPP
111 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0
121 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1
我尝试使用 pandas get_dummies,它正在创建虚拟列,但 ID 是重复的。这里 Y 是我的目标列。一个ID的多个Y值表示ID访问了多个频道。
另外请建议我是否可以通过在分类中为 X 和 Y 创建虚拟列来直接使用原始数据
new_df = pd.get_dummies(df).groupby('ID').sum()
new_df[new_df > 1] = 1
ID X1_AA X1_BB X1_HH X2_DD X2_LL X3_KK X3_aa X3_jj X3_uu X3_yy Y_III Y_MMM Y_NNN Y_OOO Y_PPP
111 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0
121 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1
编辑:我不知道 groupby 中的 .max()
方法。 @jezrael 的回答肯定更好。
对于输出中的假人来说,聚合是必要的max
:
df1 = pd.get_dummies(df).groupby('ID', as_index=False).max()
print (df1)
ID X1_AA X1_BB X1_HH X2_DD X2_LL X3_KK X3_aa X3_jj X3_uu X3_yy \
0 111 1 1 0 0 1 1 0 1 0 0
1 121 0 0 1 1 1 0 1 0 1 1
Y_III Y_MMM Y_NNN Y_OOO Y_PPP
0 0 1 1 0 0
1 1 0 0 1 1
我正在研究多标签分类问题。 X 中的每个值都是分类值。原始数据如下
ID X1 X2 X3 Y
111 AA LL KK MMM
111 AA LL KK MMM
111 BB LL jj NNN
121 HH DD uu III
121 HH DD yy OOO
121 HH LL aa PPP
我正在尝试将其转换为一个数据框,其中列(X1、X2、X3、Y)中存在的每个唯一值都将成为一个新列,并且每个 ID 都将有一个记录。我试图获得的预期输出是
ID X1_AA X1_BB X1_HH X2_LL X2_DD X3_KK X3_jj X3_uu X3_yy x3_aa Y_MMM Y_NNN Y_III Y_OOO Y_PPP
111 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0
121 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1
我尝试使用 pandas get_dummies,它正在创建虚拟列,但 ID 是重复的。这里 Y 是我的目标列。一个ID的多个Y值表示ID访问了多个频道。
另外请建议我是否可以通过在分类中为 X 和 Y 创建虚拟列来直接使用原始数据
new_df = pd.get_dummies(df).groupby('ID').sum()
new_df[new_df > 1] = 1
ID X1_AA X1_BB X1_HH X2_DD X2_LL X3_KK X3_aa X3_jj X3_uu X3_yy Y_III Y_MMM Y_NNN Y_OOO Y_PPP
111 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0
121 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1
编辑:我不知道 groupby 中的 .max()
方法。 @jezrael 的回答肯定更好。
对于输出中的假人来说,聚合是必要的max
:
df1 = pd.get_dummies(df).groupby('ID', as_index=False).max()
print (df1)
ID X1_AA X1_BB X1_HH X2_DD X2_LL X3_KK X3_aa X3_jj X3_uu X3_yy \
0 111 1 1 0 0 1 1 0 1 0 0
1 121 0 0 1 1 1 0 1 0 1 1
Y_III Y_MMM Y_NNN Y_OOO Y_PPP
0 0 1 1 0 0
1 1 0 0 1 1