Je suis en train d'utiliser GridSearchCV avec v_measure_score et comparer le résultat
avec une autre méthode SANS GridSearchCV.Sklearn - GridSearchCV avec v_measure_score est pas le même
Le meilleur score de v_measure_score par boucle for est ,69816019299 avec percentile 27;
le meilleur score de GridSearchCV est ,565562627046 avec percentile . À mon avis, les résultats devraient être les mêmes.
J'ai vérifié mon code plusieurs fois mais je n'arrive toujours pas à comprendre la raison. Voici mon code:
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 par boucle for
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_)
J'ai essayé d'ajouter de la couleur sur mon code, mais a échoué.
Désolé pour vos yeux.
Merci.