Académique Documents
Professionnel Documents
Culture Documents
Import
In [1]: import pandas as pd
import numpy as np
import matplotlib
Data
In [2]: df_etude = pd.read_csv('df_etude.csv')
In [3]: #df_etude.head()
#df_etude.head()
(165, 7)
print('X', X.shape)
X (165, 7)
print('y', y.shape)
y (165,)
Normalisation
X_scaled = scaler.fit_transform(X)
print('X_scaled', X_scaled.shape)
X_scaled (165, 7)
pca = PCA(n_components=num_components)
pca.fit(X_scaled)
Out[8]: ▾ PCA
PCA(n_components=7)
pca.fit(X_scaled)
tableau_variance = pd.DataFrame(
tableau_variance
0 Dim1 49.0
1 Dim2 70.0
2 Dim3 81.0
3 Dim4 89.0
4 Dim5 96.0
5 Dim6 99.0
6 Dim7 100.0
display_scree_plot(pca)
plt.savefig('eboulis.png')
Cercle de corrélation
plt.savefig('individu_point.png')
X_projected = pca.transform(X_scaled)
plt.show()
In [14]: # Projection des individus avec leur nom sur un espace vectoriel
X_projected[:,1])):
plt.text(x, y, X.index[i] )
plt.savefig('individu.png')
In [15]: # Création d'un model PCA à 2 dimensions pour afficher nos données sur 2 dimensions
pca = PCA(n_components=3)
pca.fit(X_scaled)
X_reduced = pca.transform(X_scaled)
Clustering hiérarchique
print('X', X.shape)
X (165, 3)
X_scaled = scaler.fit_transform(X)
print('X_scaled', X_scaled.shape)
X_scaled (165, 3)
%matplotlib inline
plt.title('Dendrogramme');
plt.savefig('cah.png')
In [20]: # Sur une base de 3 clusters sois 81% des données expliquées
# Ajuste les données au modèle et détermine à quels clusters appartient chaque indi
hiercluster.set_params(n_clusters=3)
clusters_cah = hiercluster.fit_predict(X_scaled)
X_scaled_clustered_cah['cluster'] = clusters_cah
#X_scaled_clustered_cah.head(200)
X_scaled_clustered_cah["cluster"].value_counts()
1 96
Out[22]:
0 59
2 10
K-Means
In [24]: X = df_etude
scaler = preprocessing.MinMaxScaler()
X_scaled = scaler.fit_transform(X)
#X_scaled
num_clusters = 7
plt.plot(range(1, num_clusters),score)
plt.xlabel('Nombre de cluster')
plt.ylabel('Score')
plt.title('Courbe d\'eboulis')
plt.show()
kmeans.fit(X_scaled)
clusters_k = kmeans.predict(X_scaled)
X_scaled_clustered_k.head()
Zone
X_scaled_clustered_k["cluster"].value_counts()
2 85
Out[29]:
0 70
1 10
In [30]: # Création d'un model PCA à 2 dimensions pour afficher nos données sur 2 dimensions
pca = PCA(n_components=2)
pca.fit(X_scaled)
X_reduced = pca.transform(X_scaled)
X_reduceddf['cluster'] = clusters_k
X_reduceddf.head()
Zone
Centroide
X_trans = pca.transform(X_scaled)
cls3 = cluster.KMeans(n_clusters=3)
cls3.fit(X_scaled)
ax = fig.add_subplot(121)
plt.title('3 Clusters')
<matplotlib.collections.PathCollection at 0x184bf5587f0>
Out[33]:
heatmap_cah = X_scaled_clustered_cah.groupby(['cluster']).mean()
print(heatmap_cah.shape)
#heatmap.head()
(3, 3)
heatmap_k = X_scaled_clustered_k.groupby(['cluster']).mean()
print(heatmap_k.shape)
#heatmap.head()
(3, 3)
plt.title('CAH')
plt.savefig('heatmap_cah.png')
plt.title('K-means')
plt.savefig('heatmap_k.png')
D'après le heatmap CAH, nous pouvons en déduire que les pays du cluster 2 sont plus adapté à notre
exportation.
D'après le heatmap Kmeans, nous pouvons en déduire que les pays du cluster 1 sont plus adapté
à notre exportation.
In [37]: cah = 2
k = 1
print(cluster_cah.shape)
cluster_cah.head(10)
(10, 4)
Zone
Royaume-Uni de Grande-Bretagne et
0.36 0.50 0.73 2
d'Irlande du Nord
print(cluster_k.shape)
cluster_k.head(10)
(10, 4)
Zone
Royaume-Uni de Grande-Bretagne et
0.36 0.50 0.73 1
d'Irlande du Nord
plt.title('CAH')
plt.savefig('heatmap_cah_pays_valide.png')
plt.title('K-means')
plt.savefig('heatmap_k_pays_valide.png')
0.7584950086067611
Out[43]:
Au vu du score nous pouvons voir et que les clusters de K-means et de CAH sont quasi identique.K-means
incorpore l'Afrique du Sud et CAH la Belgique
Zone
Zone
On pourrait penser que Kmeans à favorisé l'importation alors que CAH à favorisé Le PIB par habitant et la
Stabilité.
In [ ]: