所以,目前我有一堆字符串分类功能,我正在转换为一个热编码,如下所示
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
X_str = np.array([['a', 'dog', 'red'], ['b', 'cat', 'green']])
# transform to integer
X_int = LabelEncoder().fit_transform(X_str.ravel()).reshape(*X_str.shape)
# transform to binary
X_bin = OneHotEncoder().fit_transform(X_int).toarray()
print(X_bin)
# [[ 1. 0. 0. 1. 0. 1.]
# [ 0. 1. 1. 0. 1. 0.]]
这很有效。
但是,我试图找出功能到哪个维度被激活的映射
因此,例如,'a'被映射为0(因为特征向量中的第0个索引被设置为1)
'b'映射到1(因为特征向量的第一个索引设置为1)
'cat'映射到2(因为特征向量的第二个索引设置为1)
所以,我想在字典中获取所有这些映射。 什么是实现这些目标的好方法。
答案 0 :(得分:2)
使用LabelEncoder().classes_
。这将是它将被安排的顺序。而且很可能是字母。
这意味着您需要保存LabelEncoder()
对象。像这样使用它:
le = LabelEncoder()
X_int = le.fit_transform(X_str.ravel()).reshape(*X_str.shape)
print(le.classes_)
#Out:- ['a' 'b' 'cat' 'dog' 'green' 'red']
然后您可以使用:
labels = le.classes_
mappings = {}
for index, label in zip(range(len(labels)), labels):
mappings[label]=index
print(mappings)
#Out: {'a': 0, 'b': 1, 'dog': 3, 'cat': 2, 'green': 4, 'red': 5}
答案 1 :(得分:1)
您可以使用LabelEncoder方法'classes_'来完成此操作。像这样:
import pyclamd
cd=pyclamd.ClamdAgnostic()
x=cd.scan_file('/home/john/Desktop/workSpace/yara/2.pdf')
if x is False:
print ("no ")
else :
print ("Yes")