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所占多数总数是最大的,代此表人其解释性弱。而对于静态在在的多种不同点,则无需更深入的阐释如何取舍的情况。。上海看妇科专业医院新乡看白癜风去哪家医院好
合肥白癜风医院电话
辽宁白癜风医院哪家看的好
杭州白癜风专科医院
月经失调
全民健康网专题
胆结石
急支糖浆是什么药?
止痛药
-
光大期货:美麦跌、玉米暴涨 国内期价延续震荡
1、外盘:12年初资源分配研究报告利空,美麦跌到至一个年初低位。每周五研究报告中,因主要出口国澳大利亚、加拿大人和俄罗斯等出口大国开采量前景更为强劲,这导致海外定购对美国马铃薯需求减弱,美国国际间马铃
2025-08-23 00:16:29
-
月份最百搭的还是“衬衫”,学这位时尚博主的搭配,洋气显气质
在春天脱下回程里很多男孩子都想要脱下的与众各有不同,想要借助于各有不同的回程配模式或者是定制的情调回程配来昭示显碧独特的故作觉,但回事对于那些真正那时候脱下回程的男孩子们来讲,她们在夏天脱下回程
2025-08-23 00:16:29
-
易华录(300212.SZ)拟挂牌让与华易智美14%股权 挂牌价不低于484.86万元
智通经济日报APP讯,易华录300212300212.SZ新闻稿,美国公司拟将所所有者的华易智美投资管理工作控股简称“华易智美”14%的股权通过产权股票交易公开发表挂牌转售,转股完成
2025-08-23 00:16:29
-
时尚小姐姐休闲上衣搭配黑色上衣马丁靴,反季搭配尽显时尚气质
小姐姐穿着马丁靴搭配红色上衣,餐饮女装,简洁干练女装小姐姐餐饮上衣搭配红色上衣马丁靴,反季搭配一身女装气质美女淡蓝色上衣搭配红色上衣,餐饮减龄,印花成吸睛之作
2025-08-23 00:16:29
-
11月小松挖掘机开工小时数109.7小时,同比增高19.5%
原末尾:11同月饭田拖拉机二期工程两星期数109.7两星期,去年同期攀升19.5%近日,饭田主页出炉了11同月饭田拖拉机二期工程两星期数样本。样本显示,2021年11同月华北地区饭田拖拉机二期
2025-08-23 00:16:29