创建一个跨列标签编码器的字典
Creating a dictionary of a cross-column label encoder
我已使用 sklearn
的 LabelEncoder
生成两列组合的唯一编码:
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
df = pd.read_csv("data.csv", sep=",")
df
# A B
# 0 1 Yes
# 1 2 No
# 2 3 Yes
# 3 4 Yes
如下:
df['AB'] = df.apply(lambda row: hash((row['A'], row['B'])), axis=1)
le = LabelEncoder()
df['C'] = le.fit_transform(df['AB'])
A B C
0 1 Yes 1
1 2 No 6
2 3 Yes 3
3 4 Yes 4
如何为(原始列和 类)和标签编码器 类 生成 keys
和 values
的字典?我可以对 AB
中的哈希值执行此操作:
values=le.transform(le.classes_)
keys=le.classes_
dic=dict(zip(keys,values))
我在这里缺少的是 keys
列 AB
的 hash
函数生成如下内容:
{(1, Yes): 0, (2, No): 6 ,...}
一种选择是通过A和B设置索引,然后调用to_dict
:
out = df.set_index(['A','B'])['C'].to_dict()
输出:
{(1, 'Yes'): 3, (2, 'No'): 1, (3, 'Yes'): 0, (4, 'Yes'): 2}
我已使用 sklearn
的 LabelEncoder
生成两列组合的唯一编码:
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
df = pd.read_csv("data.csv", sep=",")
df
# A B
# 0 1 Yes
# 1 2 No
# 2 3 Yes
# 3 4 Yes
如下:
df['AB'] = df.apply(lambda row: hash((row['A'], row['B'])), axis=1)
le = LabelEncoder()
df['C'] = le.fit_transform(df['AB'])
A B C
0 1 Yes 1
1 2 No 6
2 3 Yes 3
3 4 Yes 4
如何为(原始列和 类)和标签编码器 类 生成 keys
和 values
的字典?我可以对 AB
中的哈希值执行此操作:
values=le.transform(le.classes_)
keys=le.classes_
dic=dict(zip(keys,values))
我在这里缺少的是 keys
列 AB
的 hash
函数生成如下内容:
{(1, Yes): 0, (2, No): 6 ,...}
一种选择是通过A和B设置索引,然后调用to_dict
:
out = df.set_index(['A','B'])['C'].to_dict()
输出:
{(1, 'Yes'): 3, (2, 'No'): 1, (3, 'Yes'): 0, (4, 'Yes'): 2}