Кодировка меток для столбцов с предложениями или длинными текстами - керас - PullRequest
0 голосов
/ 26 апреля 2019

Я искал, как кодировать несколько столбцов с длинными или короткими текстами, но я не мог найти какие-либо хорошие решения. Вот пример из моего набора данных:

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 и OneHotEncoder с sklearn, но они не работали. Любая обратная связь, помощь или направление очень ценится.

EDIT


Я подумал, что дам больше подробностей о том, чего я пытаюсь достичь

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()

Теперь у меня есть фрейм данных со следующим:

screenshotspider

Однако это не похоже на правильный способ сделать это.

Спасибо

1 Ответ

1 голос
/ 26 апреля 2019

Вы можете использовать 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]]

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...