import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from matplotlib import style
style.use('ggplot')
%matplotlib inline
x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]
plt.figure(figsize=(9,6))
plt.scatter(x,y, color='g', edgecolor='black')
plt.ylabel('y')
plt.xlabel('x')
plt.show()
X = np.array([[1,2], [5,8], [1.5, 1.8], [8, 8], [1, 0.6], [9, 11]]) # Convertendo nossos dados para um array numpy
print(X)
[[ 1. 2. ] [ 5. 8. ] [ 1.5 1.8] [ 8. 8. ] [ 1. 0.6] [ 9. 11. ]]
# Vamos inicilizar o algoritmo K-Means com os parâmetros necessários e utilizar a função fit() para ajustarmos os dados
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300, n_clusters=2, n_init=10, n_jobs=None, precompute_distances='auto', random_state=None, tol=0.0001, verbose=0)
# Obtendo os valores das centróides e rótulos baseados nos ajustes
centroids = kmeans.cluster_centers_
labels = kmeans.labels_
print(centroids)
print(labels)
[[1.16666667 1.46666667] [7.33333333 9. ]] [0 1 0 1 0 1]
cores = ["g.", "r.", "c.", "y."]
for i in range(len(X)):
print("Coordenada:", X[i], "rótulo:", labels[i])
plt.plot(X[i][0], X[i][1], cores[labels[i]], markersize=10)
plt.scatter(centroids[:,0], centroids[:,1], marker="x", s=150, linewidths=5, zorder=10, edgecolor='black')
plt.show()
Coordenada: [1. 2.] rótulo: 0 Coordenada: [5. 8.] rótulo: 1 Coordenada: [1.5 1.8] rótulo: 0 Coordenada: [8. 8.] rótulo: 1 Coordenada: [1. 0.6] rótulo: 0 Coordenada: [ 9. 11.] rótulo: 1