Saya mencoba menggunakan GridSearchCV dengan v_measure_score dan membandingkan hasilnya
dengan metode lain TANPA GridSearchCV.
Skor terbaik v_measure_score menurut for-loop adalah 0,69816019299 dengan persentil 27;
skor terbaik GridSearchCV adalah 0,565562627046 dengan persentil 12.
Menurut pendapat saya, hasilnya harus sama.
Saya telah memeriksa kode saya beberapa kali tetapi masih tidak dapat menemukan alasannya. Berikut ini adalah kode saya:
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 dengan for-loop
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_)
Saya mencoba menambahkan warna pada kode saya tetapi gagal.
Maaf untuk mata Anda.
Terima kasih.