Что такое использование методаgnast () в kmeans реализации scikit learn? - PullRequest
0 голосов
/ 04 февраля 2019

Может кто-нибудь объяснить, что такое использование метода predict() в kmeans реализации scikit learn?Официальная документация гласит, что он используется как:

Предсказание ближайшего кластера, которому принадлежит каждый образец в X.

Но я могу получить номер кластера/ метка для каждой выборки входного набора X путем обучения модели также методом fit_transform().Так в чем же метод predict()?Предполагается ли указывать ближайший кластер для невидимых данных?Если да, то как вы справляетесь с новой точкой данных, если выполняете меру уменьшения размерности, такую ​​как SVD?

Вот подобный вопрос , но я все еще не думаю, что это действительно помогает.

1 Ответ

0 голосов
/ 05 февраля 2019

для чего нужен метод предиката ()?Предполагается ли указывать на ближайший кластер для невидимых данных?

Да, точно.

тогда как вы будете обрабатывать новую точку данных, если выполняете меру уменьшения размерностинапример SVD?

Вы применяете тот же метод уменьшения размерности к невидимым данным, прежде чем передать их в .predict().Вот типичный рабочий процесс:

# prerequisites:
#    x_train: training data
#    x_test: "unseen" testing data
#    km: initialized `KMeans()` instance
#    dr: initialized dimensionality reduction instance (such as `TruncatedSVD()`)    

# fitting
x_dr = dr.fit_transform(x_train)
y = km.fit_predict(x_dr)  

# ...

# working with unseen data (models have been fitted before)
x_dr = dr.transform(x_test)
y = km.predict(x_dr)

# ...

На самом деле такие методы, как fit_transform и fit_predict, существуют для удобства.y = km.fit_predict(x) эквивалентно y = km.fit(x).predict(x).

Я думаю, что будет проще увидеть, что происходит, если мы напишем подходящую часть следующим образом:

# fitting
dr.fit(x_train)
x_dr = dr.transform(x_train)

km.fit(x_dr)
y = km.predict(x_dr)

За исключением вызова .fit() модели используются одинаково во время подгонки и с невидимыми данными.

Резюме:

  • Цель .fit() состоит в том, чтобы обучить модель с данными.
  • Цель .predict() или .transform() - применить обученную модель к данным.
  • Если вы хотите подогнать модель и применить ее к тем же данным во время обучения, есть .fit_predict() или .fit_transform()для удобства.
  • При объединении в цепочку нескольких моделей (таких как уменьшение размерности и кластеризация) применяйте их в том же порядке во время подгонки и тестирования.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...