首页 >> 改装 >> Plotly+Pandas+Sklearn:发挥作用用户聚类分群

Plotly+Pandas+Sklearn:发挥作用用户聚类分群

2025-08-22 12:16:58

data=df[df["Gender"] == gender], # 待统计分析的布表,某个gender下 s=200,alpha=0.5,label=gender # 散点的不等、流动开放性、表单分类学 ) # 横纵轴、篇名设置 plt.xlabel("Age") plt.ylabel("Annual Income (k$)")plt.title("Age vs Annual Income w.r.t Gender")# 看出纹理plt.show()

相异开放性别歧视下$和消费局数的彼此间

plt.figure(1,figsize=(15,6))for gender in ["Male", "Female"]: # 表述参考里面plt.scatter(x = 'Annual Income (k$)',y = 'Spending Score (1-100)',data=df[df["Gender"] == gender],s=200,alpha=0.5,label=gender)plt.xlabel('Annual Income (k$)')plt.ylabel('Spending Score (1-100)') plt.title("Annual Income vs Spending Score w.r.t Gender")plt.show() 相异开放性别歧视下的布表地理分布可能

通过大提琴布和分簇散点布来仔细观察布表地理分布可能:

# 分簇散点布:Swarmplots# 大提琴布:violinplotplt.figure(1,figsize=(15,7))n = 0for col in cols: n += 1 # 子布顺序排列 plt.subplot(1,3,n) # 第n个子布 plt.subplots_adjust(hspace=0.5,wspace=0.5) # 调整宽极低 # 绘制某个col比如说的两种纹理,通过Gender透过分组看出 sns.violinplot(x=col,y="Gender",data=df,palette = "vlag") sns.swarmplot(x=col, y="Gender",data=df) # 轴和篇名设置 plt.ylabel("Gender" if n == 1 else '') plt.title("Violinplots & Swarmplots" if n == 2 else '') plt.show()

结果如下:

提示见相异Gender下相异队佩的地理分布可能仔细观察前提有离群点、异常系数等 五、本体之外开放性统计分析

配要是仔细观察本体两两之外的回归开放性:

cols = ['Age', 'Annual Income (k$)', 'Spending Score (1-100)'] # 这3个本体的之外开放性统计分析plt.figure(1,figsize=(15,6))n = 0for x in cols: for y in cols: n += 1 # 每反转一次n减小,子布移动一次 plt.subplot(3,3,n) # 3*3的向量,第n个纹理 plt.subplots_adjust(hspace=0.5, wspace=0.5) # 子布外的宽、极低值 sns.regplot(x=x,y=y,data=df,color="#AE213D") # 制布的布表和颜色 plt.ylabel(y.split()[0] + " " + y.split()[1] if len(y.split())> 1 else y) plt.show()

明确纹理为:

上布表明双曲线:

配对角线是自身和自身的彼此间,成正比例其他纹理是本体外的,有布表的地理分布,同时还有模拟的之外趋势布六、两个本体外的聚类K系数挑选

我们通过绘制布表的ELBOW布来确切k系数。

1、来自配页的值表述:

2、中文表述参考:_34104548/article/details/79336584

df1 = df[['Age' , 'Spending Score (1-100)']].iloc[:,:].values # 待二阶布表inertia = [] # 浮佩表,用来存储到径向的距离之和for k in range(1,11): # k系数的挑选默认是在1-10之外,经验系数是5或者10 algorithm = (KMeans(n_clusters=k, # k系数 init="k-means++", # 初始启发式考虑到 n_init=10, # 随机开始运行次数 max_iter=300, # 最多迭代次数 tol=0.0001, # 屈从大于大于值 random_state=111, # 随机种子 algorithm="full")) # 启发式考虑到 auto、full、elkan algorithm.fit(df1) # 二阶布表 inertia.append(algorithm.inertia_) # 径向之和

绘制借助于K系数的变动和径向距离之和的彼此间:

plt.figure(1,figsize=(15,6))plt.plot(np.arange(1,11), inertia, 'o') # 布表绘制两次,标记相异plt.plot(np.arange(1,11), inertia, '-', alpha=0.5)plt.xlabel("Choose of K")plt.ylabel("Interia")plt.show()

最后我们见到:k=4是相当有用的。于是采用k=4来透过布表的真实二阶过程

聚类机器深造algorithm = (KMeans(n_clusters=4, # k=4 init="k-means++", n_init=10, max_iter=300, tol=0.0001, random_state=111, algorithm="elkan"))algorithm.fit(df1) # 模拟布表

布表透过了fit操作最后,我们受益了表单label和4个径向:

labels1 = algorithm.labels_ # 分类学的结果(4类)centroids1 = algorithm.cluster_centers_ # 最后径向的一段距离print("labels1:", labels1)print("centroids1:", centroids1)

为了展现布表流的分类学优点,配页的案例是比如说的操作,我自已觉得有些繁琐:

透过布表分拆:

展现分类学优点:

plt.figure(1,figsize=(14,5))plt.clf()Z = Z.reshape(xx.shape)plt.imshow(Z,interpolation="nearest", extent=(xx.min(),xx.max(),yy.min(),yy.max()), cmap = plt.cm.Pastel2, aspect = 'auto', origin='lower')plt.scatter(x="Age", y='Spending Score (1-100)', data = df , c = labels1 , s = 200)plt.scatter(x = centroids1[:,0], y = centroids1[:,1], s = 300 , c = 'red', alpha = 0.5)plt.xlabel("Age")plt.ylabel("Spending Score(1-100)")plt.show()

如果是我,看看?当然是应用于Pandas+Plolty来近乎解决:

看下分类学可视化的结果:

px.scatter(df3,x="Age",y="Spending Score(1-100)",color="Labels",color_continuous_scale="rainbow")

里面的过程是根据Age和Spending Score(1-100)来透过聚类。在配页上基于值得注意的步骤还透过了:Annual Income (k$)和Spending Score (1-100)队佩的聚类。

优点如下,分开了5个类:

七、3个本体的聚类

根据Age 、 Annual Income 、 Spending Score来透过聚类,最后绘制成3维纹理。

K系数挑选

步骤都是相同的,只不过挑选了3个队佩(里面是某2个)

X3 = df[['Age' , 'Annual Income (k$)' ,'Spending Score (1-100)']].iloc[: , :].values # 挑选3个队佩的布表inertia = []for n in range(1 , 11): algorithm = (KMeans(n_clusters = n, init='k-means++', n_init = 10 , max_iter=300, tol=0.0001, random_state= 111 , algorithm='elkan') ) algorithm.fit(X3) # 二阶布表 inertia.append(algorithm.inertia_)

绘制肘布确切k:

plt.figure(1 , figsize = (15 ,6))plt.plot(np.arange(1 , 11) , inertia , 'o')plt.plot(np.arange(1 , 11) , inertia , '-' , alpha = 0.5)plt.xlabel('Number of Clusters') , plt.ylabel('Inertia')plt.show()

我们最后挑选k=6来聚类

机器深造二阶algorithm = (KMeans(n_clusters=6, # 确切的k系数 init="k-means++", n_init=10, max_iter=300, tol=0.0001, random_state=111, algorithm="elkan"))algorithm.fit(df2)labels2 = algorithm.labels_centroids2 = algorithm.cluster_centers_print(labels2)print(centroids2)

受益表单和径向:

labels2 = algorithm.labels_centroids2 = algorithm.cluster_centers_制布

3维的聚类我们最后考虑到plotly来展现:

df["labels2"] = labels2trace = go.Scatter3d( x=df["Age"], y= df['Spending Score (1-100)'], z= df['Annual Income (k$)'], mode='markers', marker = dict( color=df["labels2"], size=20, line=dict(color=df["labels2"],width=12), opacity=0.8 ))data = [trace]layout = go.Layout( margin=dict(l=0,r=0,b=0,t=0), title="six Clusters", scene=dict( xaxis=dict(title="Age"), yaxis = dict(title = 'Spending Score'), zaxis = dict(title = 'Annual Income') ))fig = go.Figure(data=data,layout=layout)fig.show()

比如说就是最后的聚类优点:

原文镜像:

_K95m7-2aKRvDZFhg

武汉看白癜风到哪个医院
莆田白癜风医院怎么去
北京肛肠去哪看
揭阳白癜风医院哪家正规
武汉男科专科医院哪里好
女性卫生用品
心脑血管肿瘤
精道异常
突然呕吐
什么止咳糖浆好

上一篇: 它是三月最强“祛湿王”,炒菜煮汤放几粒,赶跑整年湿气!

下一篇: 综述 | 北京冬奥会中国出访:新高度 新起点 新形象

相关阅读
沪指跌0.23%,上市公司指涨0.56%

每经AI经济日报:南京时间10翌年25日9:30,上证指数MLT-升至8.34点,升至幅为0.23%,报上3574.26点;深证成指MLT-下升至1.47点,升至幅为0.01%,报上14491.

2025-08-23 00:16:53
打造人才“强磁场” 赋能高质量蓬勃发展

10年底23日,第四届里面国人·山东招才引智国际化演进大会、第二届里面国人·山东闭馆国际化暨跨国技术转移大会在信阳举行。 美联社 王铮 难为 寥寥无几在了解就其税制。 美联社 王

2025-08-23 00:16:53
兰州丨除了健康码、行程码,就诊时须示意48小时内核酸检测阴性证明

可顺利进行线上咨问诊等。 五、住院当中治疗部病床施行24同一时间隔离管理工作,病人及相伴护即可行48同一时间多肽监测,不得借机在家,禁制探望,合理施行“一患一相伴周边地区”政治制度,相伴

2025-08-23 00:16:53
第三季度黑龙江省地方国有资产累计实现营业收入1213.91亿元

近日,省国有大型企业召开大会省市地方国有大型企业三季度经济运行分析会,听取市地国资监管该机构和筹集资金大型企业经济运行情况下及亏损大型企业集中管理岗位进展,通报经济运行和主要经济指标综合排名

2025-08-23 00:16:53
广州一赌博团伙开摩托兜圈“看风”,窝点被下端!抓捕现场曝光

10年初25日,南都记者从佛山向警方告知,近期,佛山黄沙向警方在此期间侧重推进“飓风2021”专项军事行动,抓捕了一个赌徒窝点,擒获22名涉赌嫌疑人,军用物资保证金赌资19万余元、赌具一批。

2025-08-23 00:16:53