2014-11-27 2 views
1

Предположим, X представляет собой массив типичной формы. С учетом кода.MeanShift `fit` vs` fit_predict` scikitlearn

from sklearn.cluster import MeanShift 
ms = MeanShift(bin_seeding=True,cluster_all=False) 
ms.fit(X) 

После того, как я это делаю, ms имеет два атрибута: labels_ и cluster_centers_. Итак, мой первый вопрос: какая точка ms.fit_predict(X) или ms.predict(X), так как у нас уже есть классификация X, которую мы можем прочитать от labels_?

ответ

1

Главное отличие состоит в том, что, когда вы говорите, ms.fit (X), X - это ваш набор данных набора данных/данных поезда. по словам ms.fit_predict (X '), X' - ваш немаркированный/тестовый набор данных. т. е. вы предсказываете на немаркированном наборе данных с fit_predict. i.e, fit (X) выполняет кластеризацию, а fit_predict - кластерные метки. И нет ничего похожего, ms.predict (X), на объект «sklearn.cluster.mean_shift_.MeanShift». См. Также, dir (ms) для этого ниже.

>>> help(ms.fit) 
Help on method fit in module sklearn.cluster.mean_shift_: 

fit(self, X) method of sklearn.cluster.mean_shift_.MeanShift instance 
    Perform clustering. 

    Parameters 
    ----------- 
    X : array-like, shape=[n_samples, n_features] 
     Samples to cluster. 

>>> help(ms.fit_predict) 
Help on method fit_predict in module sklearn.base: 

fit_predict(self, X, y=None) method of sklearn.cluster.mean_shift_.MeanShift instance 
    Performs clustering on X and returns cluster labels. 

    Parameters 
    ---------- 
    X : ndarray, shape (n_samples, n_features) 
     Input data. 

    Returns 
    ------- 
    y : ndarray, shape (n_samples,) 
     cluster labels 


dir(ms) 
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_param_names', 'bandwidth', 'bin_seeding', 'cluster_all', 'fit', 'fit_predict', 'get_params', 'min_bin_freq', 'seeds', 'set_params'] 

С мс, имеющие атрибуты, как _labels & _cluster_centers, с X данных, вы можете оценить совершенство модели, используя стандартные методы неправильной классификации штрафа. вы больше не можете оценивать с помощью fit_predict, поскольку вы получите только метки, а не кластерные центры. Таким образом, вы должны проектировать центры кластеров, действительно, в зависимости от ваших критериев добротности.

+0

от sklearn.cluster импорта MeanShift мс = MeanShift() реж (мс) Выход: [ '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_param_names', 'пропускная способность', 'bin_seeding', 'cluster_all', 'подходит', 'fit_predict', 'get_params', 'min_bin_freq', 'pred', 'seed', 'set_params'] – user3659451

+0

Вы видите 'прогноз' выше? Мы импортируем одни и те же модули? Я бегу scikit 15.2. from sklearn.cluster import MeanShift – user3659451

+0

Я нахожусь на '0.14.1', но в любом случае вы могли видеть, что предсказал, используя ту же конструкцию. Поскольку у меня его нет, я не могу сказать разницы. – ekta

Смежные вопросы