Векторизация терминов внутри столбца строк в Scikit-Learn - PullRequest
0 голосов
/ 04 июля 2018

У меня есть табличный набор данных со следующей структурой: каждая строка имеет столбцы:

RecipeName: "Guacamole"
Ingredients: "Avocado, vinegar, tomato"
PreparationTime: 10

Я хочу преобразовать это в представление типа «мешок слов» в панде DataFrame, чтобы эта строка стала

(column names) RecipeName Avocado Broccoli Chocolate Tomato Vinegar Zucchini
               Guacamole      1       0        0        1      0        0
               WeirdCacao     0       0        1        1      0        0

(Я, очевидно, могу взять DataFrame с одним столбцом Ingredients и преобразовать его в список списков:

 recipe_dict = {recipes.ix[m]['RecipeName']:recipes.ix[m]['Ingredients'].split(',') for m in recipes.index}

Но я не могу использовать CountVectorizer для этого. Может быть, это даже не лучший способ справиться с этим. ) * +1010 *

1 Ответ

0 голосов
/ 04 июля 2018

Я грубо-принудительно ответил на эту конкретную проблему; но я все еще хотел бы знать, как это сделать с помощью scikit-learn, так как, возможно, я захочу перейти к tf-idf позже, например.

Учитывая диктовку, полученную

recipe_dict = {recipes.ix[m]['RecipeName']:recipes.ix[m]['Ingredients'].split(',') for m in recipes.index}

Мы делаем следующее:

from functools import reduce
ingredients = reduce(lambda x, y: x+y, recipe_dict.values())

, чтобы получить список всех ингредиентов, а затем цикл

for j in ingredients:
    recipes[j] = recipes['RecipeName'].apply(lambda i: 1 if j in recipe_dict[i] else 0) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...