У меня есть DataFrame, например:
text_data worker_dicts outcomes
0 "Some string" {"Sector":"Finance", 0
"State: NJ"}
1 "Another string" {"Sector":"Programming", 1
"State: NY"}
В нем есть как текстовая информация, так и столбец, который является словарем. (Настоящий worker_dicts
имеет гораздо больше полей). Меня интересует столбец двоичного результата.
Сначала я попытался объединить как text_data
, так и worker_dict
, грубо объединив оба столбца, а затем запустив для этого Multinomial NB:
df['stacked_features']=df['text_data'].astype(str)+'_'+df['worker_dicts']
stacked_features = np.array(df['stacked_features'])
outcomes = np.array(df['outcomes'])
text_clf = Pipeline([('vect', TfidfVectorizer(stop_words='english'), ngram_range = (1,3)),
('clf', MultinomialNB())])
text_clf = text_clf.fit(stacked_features, outcomes)
Но я получил очень плохую точность, и я думаю, что подгонка двух независимых моделей будет лучшим использованием данных, чем подгонка одной модели для обоих типов функций (как я делаю с наложением).
Как мне использовать Feature Union? worker_dicts
немного странный, потому что это словарь, поэтому я очень запутался, как мне его разобрать.