Skill: yukirang/customer-segment-eng (version 1.0.0)

--- name: customer-segmentation description: Financial customer segmentation analysis Skill. Automatically triggered when users upload bank customer data tables (CSV/Excel), completing customer stratification, feature extraction, and visualization output. Trigger scenarios include: (1) Users say "analyze customers" or "customer segmentation"; (2) Upload data files containing customer transactions, assets, behaviors, etc.; (3) Need to output customer stratification results, visual charts, or segmentation reports. --- # Customer Segmentation Skill Financial customer segmentation analysis: Stratify customers based on assets, transaction behaviors, activity levels, and other dimensions, outputting actionable segmentation results and visualizations. ## Workflow ### Step 1 — Data Loading and Cleaning Read user-uploaded CSV or Excel files, automatically identifying column names. Priority fields to retain: - `customer_id` / `客户ID` — Unique customer identifier - `age` / `年龄` - `gender` / `性别` - `balance` / `资产余额` - `txn_amount` / `交易金额` - `txn_count` / `交易次数` - `last_date` / `最近交易日期` - `product_count` / `持有产品数` - `branch` / `网点` Missing value handling: - Numeric: Fill with median - Categorical: Fill with mode - Columns with >30% missing: Delete and notify user ```python import pandas as pd df = pd.read_csv(file_path) df.columns = df.columns.str.strip().str.lower() ``` ### Step 2 — Feature Engineering Build RFM + extended features: | Feature | Description | |---------|-------------| | Recency | Days since last transaction (smaller = more active) | | Frequency | Transaction frequency (number of transactions in specified period) | | Monetary | Transaction amount (total amount in specified period) | | Tenure | Customer duration (months) | | Product_Depth | Number of products held | | Age | Customer age | Data standardization: Use `StandardScaler` (Z-score) to normalize all numeric features. ### Step 3 — Clustering Analysis Use **K-Means** algorithm, automatically determine K value (Elbow Method, SSE inflection point). ```python from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(features) # Elbow method to find optimal 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) # Simply take k with minimum SSE ``` K=5 can also be fixed based on business needs (high/medium-high/medium/medium-low/low value customers). ### Step 4 — Segment Profiling Output core statistics for each cluster: ``` Cluster 0 (High-Value Customers): Avg. assets 850k, Avg. transaction frequency 28/month, Gender distribution 62% male Cluster 1 (Potential Customers): Avg. assets 320k,明显 younger trend ... ``` Recommended label system (five categories): - 🌟 High-Value Customers (VIP) - ⬆️ Potential Customers - 🟢 Stable Customers - 🔄 Active Transaction Customers - ⚠️ Dormant/Churn Warning Customers ### Step 5 — Visualization Generate the following charts (saved as PNG): 1. **Customer Asset Distribution Histogram** — Asset distribution comparison across levels 2. **Radar Chart** — Feature comparison across segments 3. **Heatmap** — Cluster feature mean matrix 4. **Scatter Plot** — Customer distribution with assets × transaction frequency as coordinates ```python 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)) # Asset distribution 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') # Heatmap 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) ``` ### Step 6 — Output Results Output content: 1. Segmentation result table (including customer ID, cluster, segmentation label) → `segmentation_results.csv` 2. Cluster feature statistics → `cluster_summary.csv` 3. Visualization charts → `segmentation_charts.png` 4. Analysis summary (Markdown format) → `segmentation_report.md` For detailed clustering and parameter documentation: - RFM model explanation: Refer to `references/rfm-guide.md` - Clustering parameter explanation: Refer to `references/clustering-guide.md`


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)