Pythonの視覚化51 |最も一般的に使用される4つのグループ(グループ)関係図

この記事では、最も一般的に使用される「4つのグループ(グループ)関係図」を共有します。

 

目次

 


7、グループ(グループ)関係図

48、クラスタリング樹状図(樹状図)

クラスタリングによって形成されたグループ内およびグループ間の類似性のレベルを示します。

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.クラスタープロット

クラスタリングを通じて距離を計算し、同じカテゴリを丸で囲みます。

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.アンドリュースカーブ

特定のグループ化の特性に基づいて、固有のグループ化があるかどうかを示します。たとえば、次の図では、データセットの列がcylグループを支援できない場合、行は適切に分離されません。

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.平行座標

機能がグループ化に役立つかどうかを示します。機能が分離され、グループが影響を受ける場合、その機能はグループにとって非常に必要です。

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()

 

おすすめ

転載: blog.csdn.net/qq_21478261/article/details/113787807