将字符串表示为决策树中的特征,词汇量为 200(带或不带 one-hot 编码)
Posted
技术标签:
【中文标题】将字符串表示为决策树中的特征,词汇量为 200(带或不带 one-hot 编码)【英文标题】:representing strings as features in decision trees with vocabulary size of 200(with or without one-hot encoding) 【发布时间】:2019-05-29 00:09:21 【问题描述】:我是机器学习的新手!
我尝试在 sci-kit learn 中对我的整个词汇进行标记编码。但是在生成决策树时,比较的形式是浮点型。 (例如: type
更新我的问题: 我的数据如下所示:
这些列是:
输入特征
column1:字符串(可以是大小为 200 的词汇表中的任何单词。注意:这些是函数调用名称,因此类似于颜色名称或国家名称)
同样,有 4 个类似 column1 的列。
输出特征(标签):
字符串类型。这可以是大小为 500 的词汇表中的任何单词。这些都是函数调用名称,因此类似于颜色名称或国家名称)
【问题讨论】:
我认为使用CountVectorizer
是最好的选择。分享一些输入数据可能有助于我们更具体
我建议你使用 tf-idf 矢量化器,scikit-learn.org/stable/modules/generated/…
@MohamedThasinah 不是用于文档比较的 tf-idf 吗?这里我的 javascript 函数名称作为特征给出?
【参考方案1】:
您可以为此使用 countVectorizer,即使您的输入不是文档。
例如,将您的 javascript 函数词汇表视为vocab_functions
。您的输入函数出现在数据框的五列中,如下所示
df[func1],df[func2],df[func3],df[func4],df[func5]
将所有函数名用空格连接起来形成一个新列
df['input_func']
现在在此列上应用 countVectorizer,
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
'func_asb func_asdnl func_15 func_sx funcd3d',
'func_11 func_sav3 func_fdasvb15 func_saax funcdnlvasdd',
]
vectorizer = CountVectorizer()#add --- vocabulary=vocab_functions
X = vectorizer.fit_transform(corpus) # replace with df['input_func']
X.todense()
#
matrix([[0, 1, 1, 1, 0, 0, 0, 1, 1, 0],
[1, 0, 0, 0, 1, 1, 1, 0, 0, 1]], dtype=int64)
将此 X 输入到维度为 200 的决策树。
【讨论】:
将所有五个函数调用名称合并为一个字符串并将其提供给 countVectorizer()以上是关于将字符串表示为决策树中的特征,词汇量为 200(带或不带 one-hot 编码)的主要内容,如果未能解决你的问题,请参考以下文章