聚类分析案例

基本场景

业务部门拿来了一些数据找到数据部门,这些数据是关于客户的,苦于没有分析入手点,希望数据部门通过对这些数据的分析,给业务部门一些启示,或者提供后续分析或业务思考的建议。


数据源

数据源特征

USER_ID : 用户ID,整数型。

AVG_ORDERS :平均用户订单数量,浮点型。

AVG_MONEY : 平均订单价值,浮点型。

IS_ACTIVE :是否活跃,字符串型。

SEX : 性别,0,1,2标记未知,男,女。

数据类别分析

IS_ACTIVE , SEX为分类型变量,不可直接进行聚类分析。

AVG_ORDERS , AVG_MONEY具有明显的量纲差异,需要进行标准化或归一化处理。

分裂ID列,不能直接参与特征计算。

聚类方法

通过计算其聚类类别内的分类特征值出现的频数和频率。

代码

part 1 导入库

import pandas as pd # panda库
import numpy as np
import matplotlib.pyplot as plt  # 导入matplotlib库
from sklearn.preprocessing import MinMaxScaler # 标准化库
from sklearn.cluster import KMeans  # 导入sklearn聚类模块
from sklearn.metrics import silhouette_score   # 效果评估模块
import matplotlib.pyplot as plt # 图形库

part 2 读取数据

raw_data = pd.read_csv('cluster.txt')  # 导入数据文件

numeric_features = raw_data.iloc[:,1:3] # 数值型特征

part 3 数据标准化

scaler = MinMaxScaler()
scaled_numeric_features = scaler.fit_transform(numeric_features)
print(scaled_numeric_features[:,:2])

对AVG_ORDERS和AVG_MONEY做标准化处理

part 4 训练聚类模型

n_clusters = 3  # 设置聚类数量
model_kmeans = KMeans(n_clusters=n_clusters, random_state=0)  # 建立聚类模型对象
model_kmeans.fit(scaled_numeric_features)  # 训练聚类模型

聚类数量为3,建立聚类模型对象,random_state = 0是为了保证每次测试时的初始值一致,避免由于初始值不同导致的聚类结果差异。

part 5 模型效果指标评估

# 总样本量,总特征数
n_samples, n_features = raw_data.iloc[:,1:].shape
print('samples: %d \t features: %d' % (n_samples, n_features))

#非监督评估方
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值