数据分析进阶 - 基于聚类的用户标签构建

news/2024/7/5 3:32:13

前言

在用户画像标签体系建设的过程中,大部分标签都是以规则映射的方式构建,当规则难以梳理时,可以考虑用聚类模型进行划分,再用决策树的方式输出规则,这里仅简单分享,欢迎交流~

示例

确定目的

对用户消费行为进行划分客群(这里不使用RFM模型)

特征选择
  • 当月各消费区间消费频次
  • 当月消费均值
  • 当月消费方差
  • 当月日消费频次
  • 其他
预估聚类趋势

预估聚类趋势使用的霍普金斯统计量,这里不再赘述, 可直接参考之前的博客:https://blog.csdn.net/Totoro1745/article/details/112132472

聚类(仅以K-means示例)
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv("data.csv")
SSE = []
SCORE = []
for i in range(2, 10):
	est = KMeans(n_clusters=i)
    est.fit(var_raw)
    sse_value = est.inertia_
    SSE.append(sse_value)
    score_value = silhouette_score(raw, est.labels_, metric='euclidean')
    SCORE.append(score_value)
    print(i, time.strftime('%H:%M:%S', time.localtime()), sse_value, score_value)
手肘法确定聚类个数
x = range(2, 10) 
plt.xlabel('k')
plt.ylabel('SSE')
plt.plot(x, SSE, 'o-')
plt.show()

# 确定后以该聚类个数保存模型
基于决策树梳理规则并定义标签
from sklearn.cross_validation import train_test_split
from sklearn.tree import DecisionTreeClassifier
import pydotplus
from sklearn import tree
from IPython.display import Image
import graphviz
from sklearn.metrics import classification_report, roc_auc_score
import os
os.environ["PATH"] += os.pathsep + 'D:/Python35/graphviz/bin'

data = pd.re_csv("result.csv")
x = data[data.columns[:-1]]
y = data[data.columns[-1]]

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3)

clf = DecisionTreeClassifier(max_depth=3)
clf = clf.fit(x_train, y_train)

# 训练效果   
y_pre_train = clf.predict(x_train)
y_score_train = clf.predict_proba(x_train)
print(classification_report(y_true=y_train, y_pred=y_pre_train))

# 测试效果
y_pre = clf.predict(x_test)
y_score = clf.predict_proba(x_test)
print(classification_report(y_true=y_test, y_pred=y_pre))

# 以四个类为例
with open('tree.dot','w') as f:
    f = tree.export_graphviz(clf, out_file=f)
dot_data = tree.export_graphviz(clf, feature_names=x_train.columns, class_names=["A", "B", "C", "D"], 
                                    filled=True, rounded=True, special_characters=True, out_file='tree.dot')    
                                                               
with open("tree.dot") as f:
    dot_graph = f.read()
graph = pydotplus.graph_from_dot_data(dot_graph)
print(graph)
graph.write_png("model.png")

http://www.niftyadmin.cn/n/4411291.html

相关文章

数据分析进阶-基于tslearn的单变量时间序列聚类

前言 最近受一篇2015年文章《时间序列用户生命周期的聚类方法》的启发,阅读了很多时间序列聚类相关的方法,用消费行为的时间序列尝试去对用户行为进行分群,虽然现阶段的效果不如预期,就当总结希望后续能有所交流~ 基于日消费总额的时间序列聚类 为了更好地保留用户消费行…

数据分析进阶-基于tsfresh的多变量时间序列聚类

前言 上一篇博客主要尝试了基于tslearn的单变量时间序列聚类,多变量时间序列的方法经过一番搜索也没有找到合适的方式,因此考虑借助强大的时间序列特征提取工具tsfresh与KMeans尝试多变量时间序列的聚类实验 基于日消费总额+日消费次数的时间序列聚类 一、tsfresh tsfres…

数据分析进阶-cx_Oracle的简单使用

本示例使用pandascx_Oracle完成数据的读取和插入,一开始是想尝试pd.to_sql方法,但是需要借助sqlalchemy,因此本示例单纯使用cx_Oracle import pandas as pd import cx_Oracle as cxconn cx.connect(user_name/passwordhostname:port/servic…

数据分析进阶-Excel绘制分段折线图

前言 今天1024程序员节,虽然好像和我没有特别强的关系,写篇博客蹭个勋章吧~ Excel绘制分段折线图 1、如何凸显折线图中的重点片段 (1)首先将需要重点表示的数值提取出来放置新的一行数据中,如图所示,此…

Windows-设置Python定时任务

定时弹窗提醒 环境: win8Python3.8 代码: import tkinter.messagebox tkinter.messagebox.showwarning(警告,该喝水了)设置定时任务: 1、打开任务计划程序-创建任务 2、填写任务信息 3、报错指南 可查看任务计划程序库中的上次运行结果…

数据分析进阶-Excel自动化工具包openpyxl的基础使用

安装工具包 pip install openpyxl工作簿的使用 注意读取的EXCEL文件只能是xlsx后缀的噢~ # 创建工作簿 wb openpyxl.Workbook() wb.save(demo.xlsx) # 在源文件修改后也可以作为另存为的选项# 打开工作簿 wb openpyxl.load_workbook(test.xlsx, data_onlyTrue) # 读取公式…

数据分析进阶-Python提取Word文档中的表格信息

前言 利用此方法针对大量的报名表进行信息提取~ 安装工具包 pip install python-docx表格信息 代码 注意读取的EXCEL文件只能是docx后缀的噢~若文件太多可利用以下方法批量转化 import os import docx import xlwt import shutil from win32com import client as wc# 把do…