欢迎光临
我们一直在努力

AI 自动生成动态多维散点矩阵图(Scatter Plot Matrix):相关性探索与特征聚类可视化

AI 自动生成动态多维散点矩阵图(Scatter Plot Matrix):相关性探索与特征聚类可视化

封面信息图

在探索性数据分析(EDA / Exploratory Data Analysis)与特征工程中,数据科学家面临的第一道核心工序,就是摸清多个连续型特征之间的两两共线性(Multicollinearity)、非线性相关性以及潜在的异常聚类簇(Clusters)。

例如,在分析企业高价值客户画像时,我们手头有 4 个核心维度:【1. 历史总消费金额】、【2. 近 90 天成单频次】、【3. 页面平均停留时长】 与 【4. 优惠券核销率】。

如果一张图一张图去画两两组合的普通散点图:

  • 4 个特征两两组合需要画 $\\frac{4 \\times 3}{2} = 6$ 张散点图;
  • 8 个特征需要画整整 28 张图!
  • 画面极其零碎分散,分析师在多张图之间来回切换,根本无法建立立体的全局多维空间感知。

散点矩阵图(Scatter Plot Matrix / SPLOM) 是高维特征两两相关性探索的终极全景画布:它将多个维度排列为一个对称的二维网格,非对角线上绘制两两特征的交互散点图,对角线上绘制单特征的自身核密度/直方图分布,并利用不同颜色区分不同的聚类分群(Clusters),在单张交互式画布上一次性穷尽所有特征对的内在拓扑关联。

今天我们系统拆解如何利用 Plotly 的 go.Splom 引擎,打造企业级高维特征全景散点矩阵看板。


散点矩阵图(SPLOM)的视觉拓扑与数学对称性

+—————————————————————————————————-+
| 【 4 维特征全景散点矩阵图 (SPLOM) 】 |
+———————+——————-+——————-+——————+——————-+
| 维度 | 1. 消费金额 (GMV) | 2. 购买频次 (Freq)| 3. 停留时长 (Dur)| 4. 券核销率 (Cpn) |
+———————+——————-+——————-+——————+——————-+
| 1. 消费金额 (GMV) | █ 单变量直方分布 | 散点图 (GMV vs Freq)| 散点图 (GMV vs Dur)| 散点图 (GMV vs Cpn)|
| 2. 购买频次 (Freq) | 散点图 (Freq vs GMV)| █ 单变量直方分布 | 散点图 (Freq vs Dur)| 散点图 (Freq vs Cpn)|
| 3. 停留时长 (Dur) | 散点图 (Dur vs GMV)| 散点图 (Dur vs Freq)| █ 单变量直方分布 | 散点图 (Dur vs Cpn)|
| 4. 券核销率 (Cpn) | 散点图 (Cpn vs GMV)| 散点图 (Cpn vs Freq)| 散点图 (Cpn vs Dur)| █ 单变量直方分布 |
+———————+——————-+——————-+——————+——————-+

核心交互黑科技:多维框选联动 (Linked Brushing & Selection)
– 用户在任意一个子图(如 GMV vs Freq)中用鼠标拉一个框圈选出一组异常高净值用户;
– 全画布其他所有 15 个子图中对应的这批用户点,会瞬间全部同步高亮!其余点自动变灰!
– 瞬间暴露这批异常用户在其他维度上的隐藏特征(如:券核销率极低但停留时间极长)!


生产级 Python 实战代码:构建交互式客户画像 SPLOM 全景图

import plotly.graph_objects as go
import pandas as pd
import numpy as np

def generate_customer_splom_dashboard(output_html: str):
# 1. 模拟 1000 个高维客户画像特征样本与 K-Means 聚类标签
np.random.seed(42)
n_samples = 1000

# 构造 3 类具有鲜明特征的客户分群
# 群 0 (高净值忠实客): 高GMV、高频次、高停留、低券敏感
cluster_0 = pd.DataFrame({
'gmv': np.random.normal(5000, 800, 300),
'frequency': np.random.normal(25, 4, 300),
'duration_min': np.random.normal(45, 8, 300),
'coupon_ratio': np.random.beta(2, 8, 300),
'cluster_name': '高净值忠实客'
})

# 群 1 (价格敏感薅羊毛客): 低GMV、低频次、低停留、极高券核销
cluster_1 = pd.DataFrame({
'gmv': np.random.normal(600, 150, 400),
'frequency': np.random.normal(4, 1.5, 400),
'duration_min': np.random.normal(10, 3, 400),
'coupon_ratio': np.random.beta(9, 2, 400),
'cluster_name': '价格敏感羊毛客'
})

# 群 2 (高潜探索客): 中等GMV、高停留、中等券核销
cluster_2 = pd.DataFrame({
'gmv': np.random.normal(1800, 400, 300),
'frequency': np.random.normal(8, 2, 300),
'duration_min': np.random.normal(35, 6, 300),
'coupon_ratio': np.random.beta(5, 5, 300),
'cluster_name': '高潜探索新客'
})

df = pd.concat([cluster_0, cluster_1, cluster_2], ignore_index=True)

# 2. 构建 Plotly SPLOM 对象
color_map = {'高净值忠实客': '#10b981', '价格敏感羊毛客': '#ef4444', '高潜探索新客': '#38bdf8'}
colors = df['cluster_name'].map(color_map)

dimensions = [
dict(label='消费总额 (GMV)', values=df['gmv']),
dict(label='成单频次 (次)', values=df['frequency']),
dict(label='停留时长 (分)', values=df['duration_min']),
dict(label='优惠券核销率', values=df['coupon_ratio'])
]

fig = go.Figure(data=go.Splom(
dimensions=dimensions,
text=df['cluster_name'],
marker=dict(
color=colors,
size=5,
showscale=False,
line=dict(width=0.5, color='rgba(255,255,255,0.2)'),
opacity=0.75
),
diagonal=dict(visible=False), # 对角线配置
showupperhalf=True # 展示对称全矩阵
))

# 3. 界面排版美化
fig.update_layout(
title="<b>2026 年核心客户群体多维画像相关性探索与聚类散点矩阵 (SPLOM)</b>",
title_font_size=18,
title_x=0.5,
template="plotly_dark",
paper_bgcolor="#0f172a",
plot_bgcolor="#0f172a",
height=750,
width=850,
dragmode='select', # 核心:默认开启矩形框选联动模式!
hovermode='closest'
)

fig.write_html(output_html, include_plotlyjs='cdn')
print(f"客户画像多维散点矩阵看板已导出至: {output_html}")


生产落地的三条核心红线

  • 维度数量控制在 3 ~ 6 个之间:散点矩阵图的子图数量是随维度数以平方级($N^2$)膨胀的。如果放入 10 个维度,会生成 100 个微型子图,每个图只有指甲盖大小。超过 6 个维度时,先用 PCA / 主成分分析或特征重要性筛选出 Top 5 核心特征再画图。
  • 大数据量(> 5000 点)开启 WebGL 硬件加速:Plotly 的 go.Splom 原生基于 WebGL 显卡着色器渲染,能够在毫秒级流畅渲染 10,000 个数据点而绝不掉帧卡顿。
  • 配合 dragmode='select' 实现多维异动快速归因:在经营分析时,直接框选出“低 GMV 但高停留”的异常离群点,一秒导出该群体的明细 ID 列表,联动推送至 CRM 系统进行定向召回。
  • 赞(0)
    未经允许不得转载:171主机测评 » AI 自动生成动态多维散点矩阵图(Scatter Plot Matrix):相关性探索与特征聚类可视化
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址