Nilearn: Low silhouette score after ward clustering

Hi,
I used ward method to cluster rs fmri data with nilearn, but i found that the silhouette_score in sklearn is very low according to the parcellation result, here are the script:

  epi = '/home/jack/Desktop/s1r1.nii.gz'
  epi_img = nib.load(epi)
  ward_nilearn = Parcellations(method='ward', n_parcels=n_parcels,
                     standardize=False, smoothing_fwhm=False,
                     memory='nilearn_cache', memory_level=1,mask=mask_img,
                     verbose=1)
  ward_nilearn.fit(epi_img)
  labels_nilearn = ward_nilearn.labels_img_
  labels_nilearn_ = nifti_masker.transform(labels_nilearn).T
  score_nilearn = metrics.silhouette_score(epi_masked.T,labels_nilearn_,metric='euclidean')

The score_nilearn here is -0.044671338, do you have any suggestion about this? Could nilearn provide any way to measure the validity of clustering?

Take a look at the parcellation by plotting it. Maybe you’ll see some unexpected behavior.
In particular, if you provide a single image for parcellation, ward clustering will approximately fit the level sets of the image, yielding relatively weird clusters. In that case, it is probably not a good approach to extract signal and you probably rather want to use a pre-defined atlas.

Thanks for your reply, I plotted all these figures here:

  1. ward parcellation results with nilearn
    nilearn_ward

2.The average signal of preproceesed rs epi data
orig

3.Compressed average data after parcellation
nl

I do all this at grey matter mask, and indeed i did the same clustering step with sklearn using epi_data matrix, without the multi-PCA step in nilearn, here are the results:

1.Sklearn ward clustering
sklearn_ward

2.The average signal of preproceesed rs epi data
orig

3.Compressed average data after parcellation
sk

So is it a good parcellation result for this data?