visualisation python 51 | Les 4 diagrammes de relations de groupes (Groups) les plus couramment utilisés

Cet article partage le «diagramme de relations 4 groupes (groupes)» le plus couramment utilisé .

 

table des matières

 


Sept, diagramme de relation de groupe (groupes)

48, dendrogramme de clustering (dendrogramme)

Affiche le niveau de similitude au sein et entre les groupes formés par regroupement.

import scipy.cluster.hierarchy as shc

# Import Data
df = pd.read_csv('./datasets/USArrests.csv')

# Plot
plt.figure(figsize=(12, 8), dpi=80)
plt.title("USArrests Dendograms", fontsize=18)
dend = shc.dendrogram(shc.linkage(df[['Murder', 'Assault', 'UrbanPop',
                                      'Rape']],
                                  method='ward'),
                      labels=df.State.values,
                      color_threshold=200)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()

49. Graphique en grappes

Calculez la distance par regroupement et encerclez la même catégorie.

from sklearn.cluster import AgglomerativeClustering
from scipy.spatial import ConvexHull

# Import Data
df = pd.read_csv('./datasets/USArrests.csv')

# Agglomerative Clustering
cluster = AgglomerativeClustering(n_clusters=5,
                                  affinity='euclidean',
                                  linkage='ward')
cluster.fit_predict(df[['Murder', 'Assault', 'UrbanPop', 'Rape']])

# Plot
plt.figure(figsize=(12, 8), dpi=80)
plt.scatter(df.iloc[:, 0], df.iloc[:, 1], c=cluster.labels_, cmap='tab10')


# Encircle
def encircle(x, y, ax=None, **kw):
    if not ax: ax = plt.gca()
    p = np.c_[x, y]
    hull = ConvexHull(p)
    poly = plt.Polygon(p[hull.vertices, :], **kw)
    ax.add_patch(poly)


# Draw polygon surrounding vertices
encircle(df.loc[cluster.labels_ == 0, 'Murder'],
         df.loc[cluster.labels_ == 0, 'Assault'],
         ec="k",
         fc="#dc2624",
         linewidth=0)
encircle(df.loc[cluster.labels_ == 1, 'Murder'],
         df.loc[cluster.labels_ == 1, 'Assault'],
         ec="k",
         fc="#2b4750",
         linewidth=0)
encircle(df.loc[cluster.labels_ == 2, 'Murder'],
         df.loc[cluster.labels_ == 2, 'Assault'],
         ec="k",
         fc="#649E7D",
         linewidth=0)
encircle(df.loc[cluster.labels_ == 3, 'Murder'],
         df.loc[cluster.labels_ == 3, 'Assault'],
         ec="k",
         fc="#C89F91",
         linewidth=0)
encircle(df.loc[cluster.labels_ == 4, 'Murder'],
         df.loc[cluster.labels_ == 4, 'Assault'],
         ec="k",
         fc="#c7cccf",
         linewidth=0)

# Decorations
plt.xlabel('Murder')
plt.xticks(fontsize=12)
plt.ylabel('Assault')
plt.yticks(fontsize=12)
plt.title('Agglomerative Clustering of USArrests (5 Groups)', fontsize=18)
plt.show()

50. Courbe d'Andrews

Indiquez s'il existe un groupement inhérent basé sur les caractéristiques d'un groupement donné. Par exemple, dans la figure suivante, si les colonnes de l'ensemble de données ne peuvent pas aider le groupe cyl, les lignes ne seront pas bien séparées.

from pandas.plotting import andrews_curves

# Import
df = pd.read_csv("./datasets/mtcars.csv")
df.drop(['cars', 'carname'], axis=1, inplace=True)

# Plot
plt.figure(figsize=(10, 6), dpi=80)
andrews_curves(df, 'cyl', colormap='Set2_r')

# Lighten borders
plt.gca().spines["top"].set_alpha(0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(0)
plt.gca().spines["left"].set_alpha(.3)

plt.title('Andrews Curves of mtcars', fontsize=18)
plt.xlim(-3, 3)
plt.grid(alpha=0.3)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()

51. Coordonnées parallèles

Indiquez si une fonction facilite le regroupement. Si une fonctionnalité est isolée et que le groupe est affecté, la fonctionnalité est très nécessaire pour le groupe.

from pandas.plotting import parallel_coordinates

# Import Data
df_final = pd.read_csv("./datasets/diamonds_filter.csv")

# Plot
plt.figure(figsize=(11, 7), dpi=80)
parallel_coordinates(df_final, 'cut', colormap='Set2_r')

# Lighten borders
plt.gca().spines["top"].set_alpha(0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(0)
plt.gca().spines["left"].set_alpha(.3)

plt.title('Parallel Coordinated of Diamonds', fontsize=18)
plt.grid(alpha=0.3)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_21478261/article/details/113787807
conseillé
Classement