Метод преобразования конвейера с Kmeans с TruncatedSVD дает форму, отличную от указанной в n_components TruncatedSVD - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь сгруппировать некоторые научные документы, используя уменьшение размеров с разложением по сингулярным числам и K-средние по конвейеру следующим образом

decomposition = TruncatedSVD(n_components=100)
normalizer = Normalizer()
kmeans = KMeans(init='k-means++', n_clusters=30, n_init=10)
pipeline = make_pipeline(decomposition, normalizer, kmeans)
pipeline.fit(dfm)

, где dfm - это TF-IDF матричное представление по совокупности документов в форме [1613x392]. Когда я применяю метод преобразования конвейера и проверяю форму следующим образом:

pipeline.transform(dfm).shape

, я получаю [1613x30], что приводит меня в замешательство, так как я указал, что TruncatedSVD должен уменьшить размер оригиналаматрица от [1613x392] до [1613x100].

Используя приведенный выше пример, матрица, которую, я думаю, должен выводить метод transform , может быть получена следующим образом:

# Getting the TruncatedSVD transformation
pipeline.steps[0][1].transform(dfm).shape

Может кто-нибудь объяснить мне, почему? Цель всего этого состоит в том, что я хочу измерить оценку sillhouette кластеров, и для этого мне нужна матрица, переданная объекту KMeans , который должен иметь форму [1613x100], а не[1613x30]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...