带有句子或长文本的列的标签编码-keras

时间:2019-04-26 15:27:37

标签: python encoding keras scikit-learn

我一直在寻找如何使用长文本或短文本对多列进行编码,但是我真的找不到任何好的解决方案。这是我的数据集中的一个示例:

IP         Country  Domain          Attack           Signature          Thread
0.0.0.0.0  US       somedomain.net  compromized site 8787tgd9347343dex  yes
1.1.1.1.1  US       otherdomain.net trojan           74384399rfg99737h1 yes

到目前为止,我已经尝试了LabelEncoder的{​​{1}}和OneHotEncoder,但是它们没有用。任何反馈,帮助或指导,我们将不胜感激。

编辑


我想我会提供我想要完成的事情的更多细节

sklearn

现在,我有一个具有以下内容的数据框:

screenshotspider

但是,这看起来不像是正确的方法。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用DictVectorizer中的sklearn.feature_extraction

import pandas as pd
from sklearn.feature_extraction import DictVectorizer

data=pd.read_csv('export.csv',encoding = "utf-8", header=0)
vectorizer = DictVectorizer(sparse=False)
X = vectorizer.fit_transform(data[data.columns[0:]].to_dict("records"))

print(X)

对于以下输入:

          IP Country           Domain            Attack           Signature Thread
0  0.0.0.0.0      US   somedomain.net  compromized site   8787tgd9347343dex    yes
1  1.1.1.1.1      US  otherdomain.net            trojan  74384399rfg99737h1    yes

输出看起来像这样:

[[0. 1. 1. 0. 1. 1. 0. 0. 1. 1.]
 [1. 0. 0. 1. 1. 0. 1. 1. 0. 1.]] 

假定所有列都是训练功能,如果最后一列“线程”是标签,则应修改代码:

ln=(len(data.columns)-1)
vectorizer = DictVectorizer(sparse=False)
X = vectorizer.fit_transform(data[data.columns[0:ln]].to_dict("records"))
Y = data[data.columns[ln]]

希望对您有帮助