Как добавить еще одну текстовую функцию в текущую классификацию слов? В скикит-учи - PullRequest
0 голосов
/ 04 мая 2018

это моя матрица ввода введите описание изображения здесь

мой образец кода:

from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.naive_bayes import MultinomialNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

X_train, X_test, y_train, y_test = train_test_split(data['Extract'], 
data['Expense Account code Description'], random_state = 0)

from sklearn.pipeline import Pipeline , FeatureUnion
text_clf = Pipeline([('vect', CountVectorizer(ngram_range=(1,1))),
              ('tfidf', TfidfTransformer(use_idf = False)),
              ('clf', RandomForestClassifier(n_estimators =100, 
 max_features='log2',criterion = 'entropy')),
 ])
 text_clf = text_clf.fit(X_train, y_train)

здесь я применяю модель Bag of word для столбца «Извлечь», классифицирующего «Описание кода счета расходов», здесь я получаю точность около 92%, но если я хочу включить «Имя поставщика» в качестве набора другого Функция ввода, как я могу это сделать. Есть ли способ сделать это вместе с мешком слов? ,

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете использовать FeatureUnion. также вам нужно будет создать новый класс Transformer с необходимыми действиями, которые вам нужно предпринять, т.е. включить имя поставщика, получить макеты.

Feature Union впишется в ваш конвейер.

Для справки.

class get_Vendor(BaseEstimator,TransformerMixin):

    def transform(self, X,y):
        return 

lr_tfidf = Pipeline([('features',FeatureUnion([('other',get_vendor()),
        ('vect', tfidf)])),('clf', RandomForestClassifier())])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...