I found a problem in the code of spectral clustering.
When using the amg solver and "n_nodes < 5 * n_components", it will firstly generate an embedding with arpack solver. However, this generated embedding would not be return. And the transformed laplacian matrix would be used to generate a new embedding with amg solver. Since the laplacian has been changed in the arpack part, the new embedding is wrong.
It seems to be a bug.