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

Python 带有句子或长文本的列的标签编码-keras,python,encoding,keras,scikit-learn,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 troj

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

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
到目前为止,我已经尝试了
sklearn
中的
LabelEncoder
onehotcoder
,但都不起作用。非常感谢任何反馈、帮助或指导

编辑


我想我会提供更多关于我努力实现的细节

import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler

df = pd.read_csv("export.csv", sep=",")

labelencoder = LabelEncoder()

def encoder(x = len(df.columns)):
    for i in range(x):
        df.iloc[:, i] = labelencoder.fit_transform(df.iloc[:, i])

encoder()
现在,我有一个数据框,如下所示:

然而,这看起来不是正确的方法


谢谢

您可以从
sklearn.feature\u 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.]] 
假设所有列都是培训功能,如果最后一列“Thread”是标签,则应修改代码:

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]]

我希望这能帮助你

谢谢@Jithin让我试试。我会回复你的。当然@Infinite_Loop,让我知道你好@Jithin,再次感谢你的回答。我最终使用了keras标记器函数,但你给了我正确的方向,所以我会接受你的回答。