44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
|
|
import numpy as np
|
||
|
|
from matplotlib import pyplot as plt
|
||
|
|
from matplotlib.figure import Figure
|
||
|
|
from matplotlib.backends.backend_agg import FigureCanvas
|
||
|
|
from sklearn.cluster import KMeans
|
||
|
|
from sklearn.datasets.samples_generator import make_blobs
|
||
|
|
import cv2
|
||
|
|
import glob
|
||
|
|
|
||
|
|
k=5
|
||
|
|
cluster_std=1.30
|
||
|
|
n_samples=300
|
||
|
|
X, y=make_blobs(n_samples=n_samples, centers=k, cluster_std=cluster_std)
|
||
|
|
|
||
|
|
fig, (ax1, ax2)=plt.subplots(1, 2)
|
||
|
|
canvas=FigureCanvas(fig)
|
||
|
|
fig.set_size_inches(10, 6)
|
||
|
|
|
||
|
|
while 1:
|
||
|
|
ax1.cla()
|
||
|
|
ax1.scatter(X[:,0], X[:,1], marker='+', c="#FF0000")
|
||
|
|
ax1.set_title('Données')
|
||
|
|
|
||
|
|
wcss=[]
|
||
|
|
for i in range(1, 11):
|
||
|
|
kmeans=KMeans(n_clusters=i)
|
||
|
|
kmeans.fit(X)
|
||
|
|
wcss.append(kmeans.inertia_)
|
||
|
|
|
||
|
|
ax2.cla()
|
||
|
|
ax2.plot(range(1, 11), wcss, c="#FF0000")
|
||
|
|
ax2.set_title('WCSS pour "elbow method"')
|
||
|
|
|
||
|
|
canvas.draw()
|
||
|
|
img=np.array(canvas.renderer.buffer_rgba())
|
||
|
|
cv2.putText(img, "[r] reset [q] quit".format(k), (450, 40), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255), 2)
|
||
|
|
|
||
|
|
cv2.imshow("plot", img)
|
||
|
|
key=cv2.waitKey()&0xFF
|
||
|
|
if key==ord('r'):
|
||
|
|
X, y=make_blobs(n_samples=n_samples, centers=k, cluster_std=cluster_std)
|
||
|
|
if key==ord('q'):
|
||
|
|
quit()
|