import pandas as pd import sklearn.metrics as met from sklearn import preprocessing from sklearn.cluster import KMeans import matplotlib.pyplot as plt df = pd.read_csv("dogs.csv") #prikaz imena kolona + 5 prvih instanci print('Prvih 5 instanci', df.head(), sep='\n') print('\n\n') featurs = df.columns[1:3].tolist() #print(featurs) x_original=df[featurs] #standardizacija atributa x=pd.DataFrame(preprocessing.scale(x_original)) #normalizacija #x=pd.DataFrame(preprocessing.MinMaxScaler().fit_transform(x_original)) #dodeljivanje imena kolonama x.columns = featurs """ K-means parametri: n_clusters : broj klastera default: 8 max_iter : maksimalan broj iteracija default: 300 n_init : broj izvrsavanja algoritma sa razlicitim inicijalnim vrednostima default: 10 init : metodi za inicijalizaciju {‘k-means++’, ‘random’ or an ndarray} default:‘k-means++’: tol : tolerancija za konvergenciju default: 1e-4 atributi: cluster_centers_ : centri klastera labels_ : klasteri svake instance inertia_ : suma rastojanja izmedju instance i najblizeg centorida """ colors = ['red', 'green', 'gold', 'blue', 'black'] fig = plt.figure() plt_ind=1 for i in range(2,5): for init in ['k-means++', 'random']: est=KMeans(n_clusters=i, init=init) est.fit(x) df['labels']= est.labels_ #print('Prvih 5 instanci', df.head(), sep='\n') fig.add_subplot(3, 2, plt_ind) for j in range(0,i): cluster= df.loc[lambda x: x['labels'] == j, :] plt.scatter(cluster['height'], cluster['weight'], color=colors[j], s=30, marker='o', label="cluster %d"%j) plt.legend(loc='lower right') plt.title('K-means, num clasters: %d, init: %s, inertia: %.2f' % (i, init, est.inertia_), fontsize=10) plt_ind+=1 plt.tight_layout() plt.show()