Python意味着基于机器学习的RFM模型
2025-08-06 12:16:25
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import make_blobs
sns.set_style('darkgrid')
# 之中贤揭示情况克服
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 生成范例资讯
np.random.seed(123)
centers = [[2, 1], [6, 5], [10, 3]]
n_clusters = len(centers)
X, labels_true = make_blobs(n_samples=300, centers=centers, cluster_std=0.7)
plt.scatter(X[:,0],X[:,1],c='red',marker='o',
label='样品')
plt.legend()
plt.savefig('example.jpg',dpi=200)
plt.show()
字符此表述: 首再设置数据分析的意念为seaborn下的头矩形状态,其次为了让环绕(2,1),(6,5),(10,3)这三个点(类之正下方)基底样品集。借助于make_blobs()此表达式方能构筑样品集,该此表达式之中可以实体化样品集的总数n_samples和方差cluster_std。仍要以散点上图多种形型式显现出。 仍要线程KMeans终端,将该样品集开展聚类,用数据分析的方型式对聚类后结果开展显现出,结果如下上图 可以完全一致看见,聚类结果为3类,和我们预估的是赞同的,年中看一般来说之正下方于原结构设计的之正下方对比,如下此表。 从诏令可以显出,聚类之正下方是存在微小相似之处的,这也说明KMeans终端时借助于人员伤亡此表达式开展子程序的。具体字符如下# K-Means聚类
from sklearn.cluster import KMeans
sns.set_style('darkgrid')
# 之中贤揭示情况克服
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 静态数数值
k_means = KMeans(init="k-means++", n_clusters=3)
k_means.fit(X)
# 数据分析结果
fig = plt.figure(figsize=(15,8))
colors = ["#4EACC5", "#FF9C34", "#4E9A06"]
k_means_cluster_centers = k_means.cluster_centers_
k_means_labels = k_means.labels_
ax = fig.add_subplot()
for k, col in zip(range(n_clusters), colors):
my_members = k_means_labels == k
cluster_center = k_means_cluster_centers[k]
ax.plot(X[my_members, 0], X[my_members, 1], "w", markerfacecolor=col, marker="*")
ax.plot(
cluster_center[0],
cluster_center[1],
"o",
markerfacecolor=col,
markeredgecolor="k",
markersize=6,
ax.set_title("KMeans聚类结果")
#ax.set_xticks()
#ax.set_yticks()
plt.savefig('范例结果.jpg',dpi=200)
字符此表述: KMeans(init="k-means++", n_clusters=3)这段字符即将推估器数数值上述的样品集。其之中,init参数即为上述所话说KMeans++的子程序为了让方型式。而后的参数为实体化拆成多少类。 数数值后的KMeans推估器是可以开展线程的,这里我们线程类之正下方(k_means.cluster_centers_)和样品附属一般来说(k_means.labels_)。 仍要一段字符是相辅相成类之正下方和样品附属一般来说开展数据分析演示,可以非常完全一致的看见聚类后的结果。(TIps:仍要复原上图片的dpi是调整缩放的,在PythonAPI全都默认复原的上图形缩放多数都不很高,读者可以前提的设置。) 三、基于K-Means的RFM供应商分集合构筑 资讯来源首再资讯的来源依旧是在在此之前贤(Python付诸基于客观事实的RFM静态)所请注意的仍未处理好的资讯,即有user_id、R、F、M4个文件名的资讯,资讯演示如下,如有读者不清楚该资讯是如何处理,可以概述在此之前贤。 K-Means静态构筑(字符) 有了资讯和scikit-learn库之中的KMmeans终端的了解,那么年中再上零碎字符和解释,静态构筑的字符如下# RMF空战
import pandas as pd
import seaborn as sns
sns.set_style('darkgrid')
# 之中贤揭示情况克服
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
## 资讯读取
data = pd.read_excel('rfm.xlsx')
X = data.drop(columns = 'user_id')
## KMeans静态构筑
k_means = KMeans(init="k-means++", n_clusters=8,random_state=123)
k_means.fit(X)
## 一般来说察看
data['categories'] = k_means.labels_
## 具体也就是说察看
k_means.cluster_centers_
k_means.verbose
## 的设备尽力假定(等深分箱)
result = k_means.cluster_centers_
reuslt = pd.DataFrame(result)
reuslt['R_label'] = pd.qcut(reuslt[2],2,labels = range(1,3)).astype('int')
reuslt['F_label'] = pd.qcut(reuslt[0],2,labels = range(1,3)).astype('int')
reuslt['M_label'] = pd.qcut(reuslt[1],2,labels = range(1,3)).astype('int')
## 供应商归纳打标签
for i,j in data.iterrows():
if j['categories'] == 0 or j['categories'] == 2:
data.loc[i,'供应商一般来说'] = '一般的发展Gmail'
if j['categories'] == 1 or j['categories'] == 5:
data.loc[i,'供应商一般来说'] = '极为重要效益Gmail'
if j['categories'] == 3 or j['categories'] == 7:
data.loc[i,'供应商一般来说'] = '极为重要始终保持供应商'
if j['categories'] == 4 or j['categories'] == 6:
data.loc[i,'供应商一般来说'] = '一般续任供应商'
# 数据分析
cate_sta = data['供应商一般来说'].value_counts()
cate_sta = pd.DataFrame(cate_sta)
sns.barplot(y='供应商一般来说', x=cate_sta.index, data=cate_sta)
plt.title('Gmail一般来说统计')
plt.show()
字符解释:首再,完全一致我们的静态构筑最终目标。对于一份供应商;大为效益资讯而言,我们是不知道这其之中到底最主要几种一般来说的供应商的,有可能包含了8类,也有可能包含3类等。而这个一般来说的未确定就无需通过KMeans静态自动的去标识。因此,首再我们实体化聚类的簇(一般来说可有)为RFM之中的总一般来说总数8种,子程序的类之正下方依旧改用KMeans++的方型式。这段内容在右边注释为KMeans静态构筑均。有了数数值后的静态后,我们就无需察看数数值后的具体也就是说结果,k_means.cluster_centers_,k_means.labels_这两个此表达式分别察看8个类之正下方和对于每个id附属的一般来说。接着,有了类之正下方此后,我们就无需对类之正下方开展等深分箱。仍要彰显每个Gmail附加的供应商一般来说并开展数据分析直觉演示,后面将详细对结果开展阐释。 K-Means静态结果计息借助于在第二均钻研基本知识,方能对这份资讯开展一个KMeans聚类,得到的结果如下此表: 从上上图可以看见,借助于KMeans的推估器,我们仍未得到了每个id附属的一般来说,那么现在的情况是,该怎么假定Gmail是哪种供应商一般来说呢(Tips:Gmail一般来说分别为8种,不清楚的读者可以概述在此之前贤),这时候就无需请注意类之正下方,通过假定类之正下方来给每种归纳一个假定,下此表为每个一般来说完全赞同的类之正下方。 有了每个一般来说的类之正下方,我们就无需对每个类彰显RFM静态之中的供应商一般来说,本贤在这方面为了让分箱的很高难度开展归纳。 对类之正下方付诸等深分箱,与在此之前贤借助于等距分箱多种不同,这里采取的是指定每个一般来说种的偶数是赞同的,这也符合标准RFM静态之中的每个数值都有4个很高,4个较高。在Python之中借助于pd.qcut()此表达式开展分箱,其参数与等距分箱大同小异,热爱的读者可以深入研究。仍要以"2"代此表人很高,"1"代此表人较高。并按照RFM的的系统将每种一般来说彰显一个供应商一般来说,结果如下此表: 仍要,以柱状上图的多种形型式演示该份资讯集之中的供应商一般来说总数 具体数数值如下此表: 四、对比与阐释 与在此之前贤(Python付诸基于客观事实的RFM静态)对比,本贤将该份资讯集之中的Gmail分别为4类(一般的发展Gmail、极为重要始终保持供应商、一般续任供应商、极为重要效益Gmail),而在此之前贤将Gmail分别为5类(一般的发展Gmail、一般续任Gmail、极为重要续任供应商、一般始终保持Gmail、极为重要的发展Gmail)。可以显出,两者都标识出了一般的发展Gmail的资讯,且其所占多数总数也是最多的。除此以外在于,基于KMeans聚类静态的RFM静态可以挖掘出极为重要始终保持供应商、极为重要效益Gmail的资讯,而基于客观事实的RFM静态对一般续任Gmail较为适合于。 因此,对于举例来说而言,每个静态得到的RFM静态是不赞同的,而举例来说应该从静态结果的相同点方型式从,如该份资讯,两个静态都发现了一般的发展Gmail所占多数总数是最大的,代此表人其解释性弱。而对于静态在在的多种不同点,则无需更深入的阐释如何取舍的情况。。上海看妇科专业医院新乡看白癜风去哪家医院好
合肥白癜风医院电话
辽宁白癜风医院哪家看的好
杭州白癜风专科医院
月经失调
全民健康网专题
胆结石
急支糖浆是什么药?
止痛药

-
3月末全国小额贷款新公司贷款余额9330亿元
3上半年全国小额利息Corporation利息卡内9330亿元来源:新闻网站本报讯 记者马玲报道 人民银行4月27日发行的2022年一季度小额利息Corporation统计数据报告表明
2025-10-24 00:16:19

-
“金融23条”为科技型企业“贷”来收益活水
入度为2000亿元,汇率1.75%,采取“先借贷后借”的通达有助于。保险业机构向行业补发借额度后,人民中央银行按季度对符合允许的借额度年限6个年初及以上的新材料行业借额度本金的60%提供者资金投入生产
2025-10-24 00:16:19

-
银行理财“双减”背后 待资本市场调整矩尺新产品
归国有大引有方分公司投研部法律顾问对记者指,绝非商业银引有方大多是由额度转化而来。仍有积极有可能呈现虽然商业银引有方苹果电脑无期望量和体量双双急剧下降,但无需明确指出的是,与今年同期相
2025-10-24 00:16:19

-
“只出不进”中小企业储蓄告急,金融机构打出组合拳纾困
力度。苏州料保监局同一天发布的15条泰安保企举措中会引用,鼓励料零售业管理工作机构都各信贿计划,确保有充沛的信贿资源转回预防措施物资生产生产民营企业与保供保畅民营企业及关的群体的信贿需要。同时
2025-10-24 00:16:19

-
上市银行一季报减缓披露 资产质量保持稳定
上市公司交易所分行一季报存款总质量保持稳定来源:经济体制参考报上市公司交易所分行一季报正在加速公开中。4月26日晚,宁波分行、无锡分行、平安分行分别发布2022年下半年统计数据,下半年
2025-10-24 00:16:19