Я хочу, чтобы объект TfidfVectorizer возвращал нормализованный вектор l2. Я выполняю двоичную классификационную задачу с документами различной длины.Tfidvectorizer - нормализованный вектор L2
Я пытаюсь извлечь нормированные векторы каждого корпуса, поэтому я предположил, что могу просто подвести итог каждой строке матрицы Tfidfvectorizer. Однако сумма больше 1, я думал, что нормализованная копия преобразит все документы в диапазон между 0-1.
vect = TfidfVectorizer(strip_accents='unicode',
stop_words=stopwords,analyzer='word', use_idf=True, tokenizer=tokenizer, ngram_range=(1,2),sublinear_tf= True , norm='l2')
tfidf = vect.fit_transform(X_train)
# sum norm l2 documents
vect_sum = tfidf.sum(axis=1)
Значение vect_sum больше 1, я думал, используя норму приведет все векторы быть между 0-1. Я только что узнал о препроцессорном объекте в scikit learn - preprocessing.normalizer. Это что-то, что я должен использовать в конвейере Gridsearch? См. Пример ниже.
pipeline = Pipeline([
('plb', normalize(tfidf, norm='l2')), #<-- sklearn.preprocessing
('tfidf', tfidf_vectorizer),
('clf', MultinomialNB()),
])
В чем разница между preprocessing.normalizer и параметром нормы Tfidfvectorizer?