我有一堆列表y1,y2..yn
,每个列表包含属于多个类的字符串实例。我希望将它们编码为用于训练LSTM的数值类。我在想的是:
from sklearn.preprocessing import LabelEncoder
enc1 = LabelEncoder()
enc2 = LabelEncoder()
enc3 = LabelEncoder()
encoders = [enc1, enc2, enc3]
labels = [y1, y2, y3]
for i,j in zip(encoders, labels):
j = i.fit_transform(j)
但是,当我尝试时,输出仍然是所有列表的相同字符串类:
print(format(Counter(y2)))
# Out: Counter({'m': 125585, 'f': 52589})
仅在单独编码时,LabelEncoder
似乎有效,显示整数类:
y2 = enc2.fit_transform(y2)
print(format(Counter(y2)))
# Out: Counter({1: 52589, 0: 125585})
zip
方法可能会出现什么问题?
答案 0 :(得分:1)
更清洁,更智能的解决方案是列表理解:
transformed = [i.fit_transform(j) for i, j in zip(encoders, labels)]
...这样可以避免在循环中重复j
的错误。