from sklearn.preprocessing import scale
from sklearn.decomposition import PCA, FactorAnalysis
scale_cities = scale(cities.iloc[:,1:])
pca_scale_cities = PCA(n_components=2, whiten=True).fit_transform(scale_cities)
fa_scale_cities = FactorAnalysis(n_components=2).fit_transform(scale_cities)
from sklearn.cluster import AgglomerativeClustering
ward = AgglomerativeClustering(n_clusters=3, linkage='ward', compute_full_tree=True)
ward.fit(pca_scale_cities)
AgglomerativeClustering(affinity='euclidean', compute_full_tree=True,
connectivity=None, linkage='ward', memory=None, n_clusters=3,
pooling_func=<function mean at 0x0000000004DDF2F0>)