Pandas 多列标签编码:打印映射
以下代码可用于将字符串转换为分类标签:Pandas 多列标签编码:打印映射,pandas,encoding,label,multilabel-classification,Pandas,Encoding,Label,Multilabel Classification,以下代码可用于将字符串转换为分类标签: import pandas as pd from sklearn.preprocessing import LabelEncoder df = pd.DataFrame([['A','B','C','D','E','F','G','I','K','H'], ['A','E','H','F','G','I','K','','',''], ['A','C','I','F','H','
import pandas as pd
from sklearn.preprocessing import LabelEncoder
df = pd.DataFrame([['A','B','C','D','E','F','G','I','K','H'],
['A','E','H','F','G','I','K','','',''],
['A','C','I','F','H','G','','','','']],
columns=['A1', 'A2', 'A3','A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10'])
pd.DataFrame(columns=df.columns, data=LabelEncoder().fit_transform(df.values.flatten()).reshape(df.shape))
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
0 1 2 3 4 5 6 7 9 10 8
1 1 5 8 6 7 9 10 0 0 0
2 1 3 9 6 8 7 0 0 0 0
问题:
如何查询映射(它们似乎按字母顺序排序)
例如,一份清单,如:
A: 1
B: 2
C: 3
...
I: 9
K: 10
谢谢大家! 是的,如果单独定义
LabelEncoder
并稍后查询其classes
属性,则有可能
le = LabelEncoder()
data = le.fit_transform(df.values.flatten())
dict(zip(le.classes_[1:], np.arange(1, len(le.classes_))))
{'A': 1,
'B': 2,
'C': 3,
'D': 4,
'E': 5,
'F': 6,
'G': 7,
'H': 8,
'I': 9,
'K': 10}
类
按编码顺序存储类列表
le.classes_
array(['', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K'], dtype=object)
因此,您可以安全地假设第一个元素被编码为1,依此类推
要进行反向编码,请使用
le.inverse\u transform我认为标签编码器中有transform
le=LabelEncoder()
le.fit(df.values.flatten())
dict(zip(df.values.flatten(),le.transform(df.values.flatten()) ))
Out[137]:
{'': 0,
'A': 1,
'B': 2,
'C': 3,
'D': 4,
'E': 5,
'F': 6,
'G': 7,
'H': 8,
'I': 9,
'K': 10}