import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt
from sklearn.metrics import silhouette_score

df = pd.read_csv('dogs.csv')

print(df.head())

features = df.columns[1:]

scaler = MinMaxScaler().fit(df[features])
x = pd.DataFrame(scaler.transform(df[features]))
x.columns = features

colors = ['red', 'green', 'blue', 'gold']

fig = plt.figure(figsize=(5,5))
plt_ind=1

for link in ['complete', 'average', 'single']:
    est = AgglomerativeClustering(n_clusters=3, linkage=link, affinity='manhattan')
    est.fit(x)
    df['labels'] = est.labels_

    sp =fig.add_subplot(2,2,plt_ind)

    for j in range(0,3):
        cluster = df.loc[df['labels'] ==j]
        plt.scatter(cluster['height'], cluster['weight'], color = colors[j], label ="cluster %d"%j)

    plt.title('linkage %s' % link)
    plt.legend()

    print(est.children_)
    plt_ind+=1

plt.tight_layout()
plt.show()

