Install
openclaw skills install customer-segment金融客户分群分析 Skill。当用户上传银行客户数据表格(CSV/Excel)时自动触发,完成客户分层、特征提取和可视化输出。触发场景包括:(1)用户说"分析客户"或"客户分群";(2)上传了包含客户交易、资产、行为等字段的数据文件;(3)需要输出客户分层结果、可视化图表或分群报告。
openclaw skills install customer-segment金融客户分群分析:将客户按资产、交易行为、活跃度等维度进行分层,输出可操作的分群结果与可视化。
读取用户上传的 CSV 或 Excel 文件,自动识别列名。
优先保留字段:
customer_id / 客户ID — 客户唯一标识age / 年龄gender / 性别balance / 资产余额txn_amount / 交易金额txn_count / 交易次数last_date / 最近交易日期product_count / 持有产品数branch / 网点缺失值处理:
import pandas as pd
df = pd.read_csv(file_path)
df.columns = df.columns.str.strip().str.lower()
构建 RFM + 扩展特征:
| 特征 | 说明 |
|---|---|
| Recency | 距今天数(越小越活跃) |
| Frequency | 交易频率(指定周期内交易次数) |
| Monetary | 交易金额(指定周期内总金额) |
| Tenure | 客户持有时长(月) |
| Product_Depth | 持有产品数量 |
| Age | 客户年龄 |
数据标准化:使用 StandardScaler(Z-score)归一化所有数值型特征。
使用 K-Means 算法,自动确定 K 值(肘部法则 Elbow Method,SSE 拐点)。
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(features)
# 肘部法则找最优K
sse = {}
for k in range(2, 10):
km = KMeans(n_clusters=k, random_state=42, n_init=10)
km.fit(X_scaled)
sse[k] = km.inertia_
optimal_k = min(sse, key=sse.get) # 简单取SSE最小的k
也可根据业务需求固定 K=5(高/中高/中/中低/低价值客户)。
输出每个簇的核心统计量:
簇 0(高价值客户):平均资产 85万,平均交易频次 28次/月,性别分布男62%
簇 1(潜力客户):平均资产 32万,年轻化趋势明显
...
推荐标签体系(五类):
生成以下图表(保存为 PNG):
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('Agg')
plt.rcParams['font.sans-serif'] = ['WenQuanYi Micro Hei', 'SimHei']
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 资产分布
axes[0].hist([g['balance'] for _, g in df.groupby('cluster')], bins=30, label=[f'C{i}' for i in range(k)])
axes[0].set_title('Customer Balance Distribution by Cluster')
# 热力图
import seaborn as sns
sns.heatmap(cluster_means.T, annot=True, fmt='.1f', ax=axes[1])
axes[1].set_title('Cluster Feature Heatmap')
plt.tight_layout()
plt.savefig(output_path, dpi=150)
输出内容:
segmentation_results.csvcluster_summary.csvsegmentation_charts.pngsegmentation_report.md详细聚类和参数文档见:
references/rfm-guide.mdreferences/clustering-guide.md