我一直在寻找如何使用长文本或短文本对多列进行编码,但是我真的找不到任何好的解决方案。这是我的数据集中的一个示例:
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
现在,我有一个具有以下内容的数据框:
但是,这看起来不像是正确的方法。
谢谢
答案 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]]
希望对您有帮助