我是机器学习的新手!
我试图在sci-kit学习中对整个词汇进行标签编码。但是,当生成决策树时,比较形式为float类型。
(例如:输入因此我决定对标签进行一次热编码,但是在我的数据集中,词汇量为200的列重复了一次(准确地说是5次)。每个数据的列数非常大(5 * 200 + 3),因此这似乎不是一个合适的解决方案。我的词汇表由javascript中的函数名称组成。
还有其他方法可以将这些字符串表示为决策树中的特征吗?还是应该使用任何其他模型?
我的问题更新:
我的数据如下所示:
这些列是:
输入功能
column1:字符串(可以是200号词汇表中的任何单词。注意:这些是函数调用名称,因此类似于颜色名称或国家/地区名称)
同样,有4个类似的列,例如column1。
输出特征(标签):
字符串类型。这可以是500号词汇表中的任何单词。同样,这些是函数调用名称,因此类似于颜色名称或国家/地区名称)
最佳答案
您可以为此使用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。
关于python-3.x - 将词汇表示为决策树中的特征,词汇量为200(带有或不带有一键编码),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54004736/