Использование:
vocab = set(j for i in df['Ingredients'] for j in i)
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(vocabulary=vocab, analyzer=lambda x: x)
X = cv.fit_transform(df['Ingredients'])
Если вы загрузите столбец Ingredients {ArrayOf<string>}
как text
, вам придется преобразовать в список с помощью -
df['Ingredients'] = df['Ingredients {ArrayOf<string>} '].apply(lambda x: [i.strip() for i in x.replace('[','').replace(']','').split(',')])
выход
X
будет вашей входной матрицей -
X.todense()
matrix([[1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1],
[0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0],
[0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]], dtype=int64)
Для словарного запаса -
cv.get_feature_names()
['Basil',
'Beef',
'Chicken',
'Coriander Seeds',
'Cumin',
'Garlic',
'Ginger',
'Onion',
'Oregano',
'Paprika',
'Spaghetti',
'Tomato']