DrPepper8888 / IPMN

0 stars 0 forks source link

CLV图像可视化 #20

Open DrPepper8888 opened 2 months ago

DrPepper8888 commented 2 months ago
import matplotlib.pyplot as plt
import pandas as pd

# 假设 xaction_RFM 是一个已经存在的 pandas DataFrame
# 并且它包含一个名为 'frequency' 的列

# 设置图形大小
plt.rcParams["figure.figsize"] = (20, 10)

# 创建一个新的 Figure 对象
fig, ax = plt.subplots()

# 在这个 Figure 上绘制直方图
# 假设 xaction_RFM 是一个 pandas DataFrame
ax.hist(xaction_RFM['frequency'], bins=31, color='blue', alpha=0.7)

# 添加标题和标签
ax.set_title('Frequency Distribution')
ax.set_xlabel('Frequency')
ax.set_ylabel('Count')

# 保存图像到文件
fig.savefig('frequency_distribution.png')

# 显示图形(可选)
plt.show()
DrPepper8888 commented 2 months ago

自定义 y 轴刻度标签,以显示每个柱的计数

def autolabel(rects): for rect in rects: height = rect.get_height() ax.annotate('{}'.format(height), xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 3), # 3 points vertical offset textcoords="offset points", ha='center', va='bottom')

应用自定义的刻度标签

autolabel(hist)

DrPepper8888 commented 2 months ago
import lifetimes.plotting as lplt
import matplotlib.pyplot as plt

# 假设bgf是一个已经拟合好的BetaGeoFitter模型对象

# 设置图形大小
plt.rcParams["figure.figsize"] = (10, 8)

# 绘制频率-最近性矩阵
lplt.plot_frequency_recency_matrix(bgf)

# 添加标题
plt.title('Frequency-Recency Matrix')

# 保存图像到文件
plt.savefig('frequency_recency_matrix.png')
DrPepper8888 commented 2 months ago
import lifetimes.plotting as lplt
import matplotlib.pyplot as plt

# 假设bgf是一个已经拟合好的模型对象

# 设置图形大小和分辨率等参数
plt.rcParams["figure.figsize"] = (12, 8)  # 你可以调整图形的大小
plt.rcParams["savefig.dpi"] = 100  # 设置图像的分辨率

# 绘制生存概率矩阵
lplt.plot_probability_alive_matrix(bgf)

# 添加标题
plt.title('Probability of Being Alive Matrix')

# 保存图像到文件
plt.savefig('survival_probability_matrix.png')  # 你可以指定不同的文件名和路径

# 清除当前图形,以便后续绘图
plt.clf()
DrPepper8888 commented 2 months ago
import lifetimes.plotting as lplt
import matplotlib.pyplot as plt

# 假设bgf是一个已经拟合好的模型对象

# 设置图形大小和分辨率等参数
plt.rcParams["figure.figsize"] = (12, 6)  # 你可以调整图形的大小
plt.rcParams["savefig.dpi"] = 100  # 设置图像的分辨率

# 绘制期间交易图,并设置y轴为对数刻度
ax = lplt.plot_period_transactions(bgf, max_frequency=10)
ax.set_yscale('log')

# 添加标题
ax.set_title('Period Transactions Distribution')

# 保存图像到文件
plt.savefig('period_transactions_distribution.png')  # 你可以指定不同的文件名和路径

# 清除当前图形,以便后续绘图
plt.clf()
DrPepper8888 commented 2 months ago
import lifetimes.plotting as lplt
import matplotlib.pyplot as plt

# 假设bgf是一个已经拟合好的模型对象,df是包含交易数据的DataFrame

# 设置图形大小和分辨率等参数
plt.rcParams["figure.figsize"] = (12, 6)  # 你可以调整图形的大小
plt.rcParams["savefig.dpi"] = 100  # 设置图像的分辨率

# 绘制累积交易图
lplt.plot_cumulative_transactions(bgf, df, 'TRANS_DATE', 'CUST_ID', 373, 313, freq='D')

# 添加标题
plt.title('Cumulative Transactions Over Time')

# 保存图像到文件
plt.savefig('cumulative_transactions.png')  # 你可以指定不同的文件名和路径

# 清除当前图形,以便后续绘图
plt.clf()
DrPepper8888 commented 2 months ago
import lifetimes.plotting as lplt
import matplotlib.pyplot as plt

# 假设bgf是一个已经拟合好的模型对象,df是包含交易数据的DataFrame

# 设置图形大小和分辨率等参数
plt.rcParams["figure.figsize"] = (12, 6)  # 你可以调整图形的大小
plt.rcParams["savefig.dpi"] = 100  # 设置图像的分辨率

# 绘制增量交易图
lplt.plot_incremental_transactions(bgf, df, 'TRANS_DATE', 'CUST_ID', 373, 313, freq='D')

# 添加标题
plt.title('Incremental Transactions Over Time')

# 保存图像到文件
plt.savefig('incremental_transactions.png')  # 你可以指定不同的文件名和路径

# 清除当前图形,以便后续绘图
plt.clf()
DrPepper8888 commented 2 months ago
import lifetimes.plotting as lplt
import matplotlib.pyplot as plt

# 假设bgf是一个已经拟合好的模型对象,summary_cal_holdout是校准和保留数据的DataFrame或Series

# 设置图形大小和分辨率等参数
plt.rcParams["figure.figsize"] = (12, 8)  # 你可以调整图形的大小
plt.rcParams["savefig.dpi"] = 100  # 设置图像的分辨率

# 绘制校准购买与保留购买的对比图
lplt.plot_calibration_purchases_vs_holdout_purchases(bgf, summary_cal_holdout, n=60)

# 添加标题
plt.title('Calibration vs. Holdout Purchases')

# 保存图像到文件
plt.savefig('calibration_vs_holdout_purchases.png')  # 你可以指定不同的文件名和路径

# 清除当前图形,以便后续绘图
plt.clf()