我使用以下代码将字符串标签列表映射到一个热编码值列表:
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
labelEncoder = LabelEncoder()
targets = ["blue","green","blue","blue","green"]
integerEncoded = labelEncoder.fit_transform(targets)
稍后我需要确切地知道哪些字符串标签映射到哪个整数值。
即。我需要这样的东西:
integerMapping = GetIntegerMapping(labelEncoder)
哪里
integerMapping["blue"]
应该返回所有“蓝色”标签映射到的
的int值和
integerMapping["green"]
应返回所有“绿色”标签映射到的int值。
如何才能获得integerMapping
dictonary?
答案 0 :(得分:0)
您可以使用LabelEncoder.classes_
和LabelEncoder.transform()
来获取您要求的关系。以下功能可以满足您的需求。
def get_integer_mapping(le):
'''
Return a dict mapping labels to their integer values
from an SKlearn LabelEncoder
le = a fitted SKlearn LabelEncoder
'''
res = {}
for cl in le.classes_:
res.update({cl:le.transform([cl])[0]})
return res
classes = ['blue', 'green']
le = LabelEncoder()
le.fit(classes)
integerMapping = get_integer_mapping(le)
integerMapping['blue'] # Returns 0
integerMapping['green'] # Returns 1
如果你有很多类,由于for
循环,这可能不会非常快,但它应该适用于少数类。
在适合10,000个类的LabelEncoder上定时。结果如下:
%timeit get_integer_mapping(le)
1 loop, best of 3: 17.1 s per loop
它实际上比我预期的更高效。
答案 1 :(得分:0)
标签编码器安装后有(function($) {
var elmDrag, replacerSet = $();
var eventStack = ['dragstart', 'dragend', 'selectstart', 'dragover', 'dragenter', 'drop'];
$.fn.dropme = function(options) {
var userOpt = options.toString();
options = $.extend({
linkTo: false
}, options);
return this.each(function() {
var regEx = new RegExp("/^enable|disable|destroy$/");
var index, items = $(this).children(options.items);
var replacer = $('<' + (this.tagName.match(/^ul|ol|div$/i) ? 'li' : 'div') + ' class="drop-replacer">');
$(this).data('items', options.items);
replacerSet = replacerSet.add(replacer);
if (options.linkTo) {
$(options.linkTo).add(this).data('linkTo', options.linkTo);
}
items.attr('draggable', 'true').on(eventStack[0], function(e) {
var dataTrnsfr = e.originalEvent.dataTransfer;
dataTrnsfr.effectAllowed = 'move';
dataTrnsfr.setData('Text', 'dummy');
elmDrag = $(this);
index = (elmDrag).addClass('drop-elmDrag').index();
// console.log('Pegou elemento largado');
}).on(eventStack[1], function() {
(elmDrag = $(this)).removeClass('drop-elmDrag').show();
replacerSet.detach();
if (index != elmDrag.index()) {
items.parent().trigger('sortupdate', {
item: elmDrag
});
}
elmDrag = null;
// console.log('largou o elemento');
}).not('a[href], img').on(eventStack[2], function() {
this.dragDrop && this.dragDrop();
// console.log('Responsavel pelo organizar elementos');
return false;
}).end().add([this, replacer]).on('dragover dragenter drop', function(event) {
if (!items.is(elmDrag) && options.linkTo !== $(elmDrag).parent().data('linkTo')) {
return true;
}
if (event.type == 'drop') {
event.stopPropagation();
replacerSet.filter(':visible').after(elmDrag);
return false;
}
event.preventDefault();
event.originalEvent.dataTransfer.dropEffect = 'move';
if (items.is(this)) {
if (options.replacerSize) {
replacer.height(elmDrag.outerHeight());
}
elmDrag.hide();
$(this)[replacer.index() < $(this).index() ? 'after' : 'before'](replacer);
replacerSet.not(replacer).detach();
} else if (!replacerSet.is(this) && !$(this).children(options.items).length) {
replacerSet.detach();
$(this).append(replacer);
}
return false;
});
});
};
})(jQuery);
属性。用于替换标签值的整数是此数组中标签的索引。所以你可以通过以下方式获得映射:
classes_
答案 2 :(得分:0)
您可以制作一个字典来映射目标和编码的整数
integerMapping=dict(zip(targets,integerEncoded))