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标记器函数,但你给了我正确的方向,所以我会接受你的回答。