Initial commit
This commit is contained in:
5
Divers/tutoriel31/README.md
Normal file
5
Divers/tutoriel31/README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Tutoriel 31
|
||||
## K-moyennes: coefficient silhouette
|
||||
|
||||
La vidéo de ce tutoriel est disponible à l'adresse suivante: https://www.youtube.com/watch?v=H_AW_lwvdDk
|
||||
|
||||
42
Divers/tutoriel31/silouhette.py
Normal file
42
Divers/tutoriel31/silouhette.py
Normal file
@@ -0,0 +1,42 @@
|
||||
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
|
||||
|
||||
cluster_std=1.30
|
||||
n_samples=300
|
||||
X, y=make_blobs(n_samples=n_samples, centers=5, cluster_std=cluster_std)
|
||||
|
||||
fig, (ax1, ax2)=plt.subplots(1, 2)
|
||||
canvas=FigureCanvas(fig)
|
||||
fig.set_size_inches(11, 6)
|
||||
|
||||
k=2
|
||||
while 1:
|
||||
ax1.cla()
|
||||
ax1.scatter(X[:,0], X[:,1], marker='+', c="#FF0000")
|
||||
|
||||
kmeans=KMeans(n_clusters=k)
|
||||
pred_y=kmeans.fit_predict(X)
|
||||
|
||||
ax2.cla()
|
||||
ax2.scatter(X[:,0], X[:,1], c=pred_y, marker='+')
|
||||
ax2.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=50, c='#0000FF')
|
||||
canvas.draw()
|
||||
|
||||
img=np.array(canvas.renderer.buffer_rgba())
|
||||
cv2.putText(img, "Nbr cluster={:02d} [p|m] nbr clusters [r] reset [q] quit".format(k), (250, 50), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255), 2)
|
||||
|
||||
cv2.imshow("plot", img)
|
||||
key=cv2.waitKey()&0xFF
|
||||
if key==ord('p'):
|
||||
k=min(99, k+1)
|
||||
if key==ord('m'):
|
||||
k=max(2, k-1)
|
||||
if key==ord('r'):
|
||||
X, y=make_blobs(n_samples=n_samples, centers=5, cluster_std=cluster_std)
|
||||
if key==ord('q'):
|
||||
quit()
|
||||
43
Divers/tutoriel31/silouhette2.py
Normal file
43
Divers/tutoriel31/silouhette2.py
Normal file
@@ -0,0 +1,43 @@
|
||||
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()
|
||||
57
Divers/tutoriel31/silouhette3.py
Normal file
57
Divers/tutoriel31/silouhette3.py
Normal file
@@ -0,0 +1,57 @@
|
||||
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
|
||||
from sklearn.metrics import silhouette_score
|
||||
import cv2
|
||||
import glob
|
||||
|
||||
k=5
|
||||
cluster_std=1.30
|
||||
n_samples=300
|
||||
fig, ((ax1, ax2), (ax3, ax4))=plt.subplots(2, 2)
|
||||
canvas=FigureCanvas(fig)
|
||||
fig.set_size_inches(12, 8)
|
||||
|
||||
X, y=make_blobs(n_samples=n_samples, centers=k, cluster_std=cluster_std)
|
||||
|
||||
while 1:
|
||||
ax1.cla()
|
||||
ax1.plot(X[:,0], X[:,1], "+", c="#FF0000")
|
||||
ax1.set_title('Données')
|
||||
|
||||
wcss=[]
|
||||
tab_silhouette=[]
|
||||
for i in range(2, 11):
|
||||
kmeans=KMeans(n_clusters=i)
|
||||
cluster_labels=kmeans.fit_predict(X)
|
||||
wcss.append(kmeans.inertia_)
|
||||
tab_silhouette.append(silhouette_score(X, cluster_labels))
|
||||
|
||||
ax2.cla()
|
||||
ax2.plot(range(2, 11), wcss, c="#FF0000")
|
||||
ax2.set_title('WCSS pour "elbow method"')
|
||||
|
||||
ax3.cla()
|
||||
ax3.plot(range(2, 11), tab_silhouette, c="#FF0000")
|
||||
ax3.set_title('Coefficient silhouette')
|
||||
|
||||
kmeans=KMeans(n_clusters=np.argmax(tab_silhouette)+2)
|
||||
pred_y=kmeans.fit_predict(X)
|
||||
ax4.cla()
|
||||
ax4.scatter(X[:,0], X[:,1], c=pred_y, marker='+')
|
||||
ax4.set_title('Données + centre clusters')
|
||||
ax4.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=100, c="#0000FF")
|
||||
|
||||
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()
|
||||
Reference in New Issue
Block a user