2016-11-18 2 views
0

Я пытаюсь использовать GridSearchCV с v_measure_score и сравнить результат
с другим методом БЕЗ GridSearchCV.Sklearn - GridSearchCV с v_measure_score не то же самое

лучший результат v_measure_score с помощью петли для- является +0,69816019299 с процентиль 27;
лучший результат GridSearchCV является 0,565562627046 с процентиль .

На мой взгляд, результаты должны быть одинаковыми.
Я проверил свой код несколько раз, но до сих пор не могу понять причину. Ниже мой код:

GridSearchCV

estimators = [('tfIdf', TfidfTransformer()), ('sPT', SelectPercentile()), ('kmeans', cluster.KMeans())] 
pipe = Pipeline(estimators) 
params = dict(tfIdf__smooth_idf=[True], 
       sPT__score_func= [f_classif], sPT__percentile=range(100, 0, -1), 
       kmeans__n_clusters=[clusterNum], kmeans__random_state=[0], kmeans__precompute_distances=[True]) 
v_measure_scorer = make_scorer(v_measure_score) 
grid_search = GridSearchCV(pipe, param_grid=params, scoring=v_measure_scorer) 
grid_search_fit = grid_search.fit(apiVectorArray, yTarget) 

v_measure_score по для цикла

bestPercent = [-1, -1] 
for percent in xrange(100, 0, -1): 
    transformer = TfidfTransformer(smooth_idf=True) 
    apiVectorArrayTFIDF = transformer.fit_transform(apiVectorArray) 
    apiVectorFit = SelectPercentile(f_classif, percentile=percent).fit(apiVectorArrayTFIDF, yTarget) 
    k_means = cluster.KMeans(n_clusters=clusterNum, random_state=0, precompute_distances=True).fit(apiVectorFit.transform(apiVectorArrayTFIDF)) 

    if v_measure_score(yTarget, k_means.labels_) > bestPercent[1]: 
     bestPercent[0] = percent 
     bestPercent[1] = v_measure_score(yTarget, k_means.labels_) 

Я пытался добавить цвет в моем коде, но не удалось.
Извините за ваши глаза.

Спасибо.

ответ

0

Я думаю, что ответ потому, что GridSearchCV использует кросс-валидацию для соответствия данным, оценка отличается от цикла.