AI 自动获客系统中客户画像与细分功能的示例代码。这个示例会用到 pandas 进行数据处理,scikit - learn 进行聚类分析以实现客户细分。ai获客软件搭建、ai获客软件
代码说明
数据生成:generate_sample_data 函数创建了一个简单的客户数据集,包含客户 ID、年龄、购买频率和平均购买金额等信息。
数据预处理:preprocess_data 函数提取所需特征,然后使用 StandardScaler 对数据进行标准化处理,确保各个特征具有相同的尺度。
客户细分:customer_segmentation 函数使用 K - Means 聚类算法将客户分为 3 个类别,你可以根据实际情况调整聚类的数量。
客户画像构建:build_customer_portraits 函数将聚类标签添加到原始数据中,然后按照聚类标签分组,计算每个客户群体的年龄、购买频率、平均购买金额的均值以及客户数量。
可视化:visualize_segmentation 函数使用 matplotlib 库绘制散点图,展示客户细分的结果。
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 生成示例数据
def generate_sample_data():
data = {
'customer_id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'age': [25, 30, 35, 40, 45, 22, 28, 32, 38, 42],
'purchase_frequency': [5, 3, 7, 2, 4, 6, 8, 1, 3, 5],
'average_purchase_amount': [100, 200, 150, 300, 250, 80, 120, 220, 180, 280]
}
return pd.DataFrame(data)
# 数据预处理
def preprocess_data(df):
# 提取特征
features = df[['age', 'purchase_frequency', 'average_purchase_amount']]
# 数据标准化
scaler = StandardScaler()
scaled_features = scaler.fit_transform(features)
return scaled_features
# 客户细分
def customer_segmentation(scaled_features):
# 使用 K-Means 进行聚类
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(scaled_features)
return kmeans.labels_
# 客户画像构建
def build_customer_portraits(df, labels):
df['segment'] = labels
portraits = df.groupby('segment').agg({
'age': 'mean',
'purchase_frequency': 'mean',
'average_purchase_amount': 'mean',
'customer_id': 'count'
}).rename(columns={'customer_id': 'customer_count'})
return portraits
# 可视化客户细分结果
def visualize_segmentation(df, labels):
plt.scatter(df['age'], df['average_purchase_amount'], c=labels, cmap='viridis')
plt.xlabel('Age')
plt.ylabel('Average Purchase Amount')
plt.title('Customer Segmentation')
plt.show()
if __name__ == "__main__":
# 生成示例数据
df = generate_sample_data()
# 数据预处理
scaled_features = preprocess_data(df)
# 客户细分
labels = customer_segmentation(scaled_features)
# 客户画像构建
portraits = build_customer_portraits(df, labels)
print("客户画像:")
print(portraits)
# 可视化客户细分结果
visualize_segmentation(df, labels)