Я пытаюсь сгруппировать некоторые научные документы, используя уменьшение размеров с разложением по сингулярным числам и 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]