scikit-learn нормализатор процесса на разреженной матрице - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь нормализовать данные в разреженной матрице (матрица в формате TF).у меня были сомнения,

Правильно использовать sklearn.preprocessing.Normalizer только для нормализации моей матрицы?

Имеет ли смысл нормализовать и использовать матрицу TF для кластеризации?

Моя матрица такова:

 (0, 0) 1
 (7, 0) 1
 (13, 0)    1
 (31, 0)    4
 (97, 0)    3
 (99, 0)    1

Я использую этот код из API sklearn:

 transformer = Normalizer().fit(sparse_matrix) # fit does nothing.

 Normalizer(copy=True, norm='l2')
 transformer.transform(sparse_matrix)  

Где разреженная матрица, это моя матрица TF.

Вывод следующий:

 (0, 0) 0.04822428221704121
 (0, 1) 0.04822428221704121
 (0, 2) 0.04822428221704121
 (0, 3) 0.14467284665112365
 (0, 4) 0.04822428221704121
 (0, 5) 0.04822428221704121
 (0, 6) 0.09644856443408242
 (0, 7) 0.19289712886816485

Поскольку я впервые это делаю, я не хочу ошибаться.На этих новых данных я хочу применить кластеризацию, чтобы увидеть различия между нормализацией и TF-IDF.Извините, если этот вопрос звучит глупо, но я пытаюсь учиться с нуля.

1 Ответ

0 голосов
/ 03 января 2019

Матрица tfidf, созданная sklearn, уже нормализована соответствующим образом.

Обычная нормализация - это длина единицы l2, чтобы произведение точек, евклидово расстояние и косинус возвращали одинаковое ранжирование.С теоретической точки зрения (и вы всегда должны учитывать , почему ), это соответствует нормализации длины документа : документ, который в два раза объединяет другой документ, будет производить то же самоеvector.

Подумайте несколько минут, как проверить, что матрица действительно нормализована таким образом.Это однострочное выражение, включающее dot.

...