我在sklearn中渲染了一些功能,但我遇到了一个问题。如果您的数据可以编码为每个项目的一个dict键,则DictVectorizer可以正常工作。如果您的商品可以包含同一列的两个或更多值,该怎么办?例如,DictVectorizer可以在像这样的项目上正常工作:
def set_locale
current_locale = 'en' # default one
parsed_locale = request.fullpath.split('/').last
parsed_locale = I18n.available_locales.map(&:to_s).include?(parsed_locale.to_s) ? parsed_locale : current_locale
I18n.locale = parsed_locale
end
但是这样的事情呢,每列有多个值?
{'a': 'b', 'b': 'c'}
单热编码的策略仍然适用,您只需要两列...... a = b和a = c。据我所知,没有这样的矢量化器存在!在这种情况下应该做什么?我是否需要创建自己的MultiDictVectorizer?
我在发布之前在blog post写了这篇文章。
答案 0 :(得分:1)
这种情况至少有两种快速解决方案:
创建一个新值,表示有两个聚合值的可能性
{'a': 'bc', 'b': 'd'}
或给它另一个名字,即'bc'-->'e'
每次使用其中一个值
复制样本 {'a': 'b', 'b': 'd'}
和
{'a': 'c', 'b': 'd'}
但当然这很大程度上取决于你的问题背景(案例2:重复'具有不同表现形式的样本是否正确?案例1:在概念上是可接受的另一个新特征值?)。例如,我甚至不知道该多值特征是否与N/A
情况相对应。
我已经看过你的github提案了,所以我明白这不是你想要的,但万一它可以省去你的努力。
答案 1 :(得分:0)
DictVectorizer无法处理每个键的多个值,因此我将此功能添加到其中。如果拉动被接受,这将是sklearn的一部分。如果没有,我将在MultiDictVectorizer中继承DictVectorizer,并将为此类发布一个包。