Plotly+Pandas+Sklearn:发挥作用用户聚类分群
2025-08-22 12:16:58
相异开放性别歧视下$和消费局数的彼此间
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
。武汉看白癜风到哪个医院莆田白癜风医院怎么去
北京肛肠去哪看
揭阳白癜风医院哪家正规
武汉男科专科医院哪里好
女性卫生用品
心脑血管肿瘤
精道异常
突然呕吐
什么止咳糖浆好
-
天邦股份:该公司不考虑养牛
每经AI快讯,有房地产者在房地产者社交该平台提问:董秘您好,请问贵公司养了山羊,确有选择开荒呢。 天邦股份(002124.SZ)9月22日在房地产者社交该平台说明,公司近年来大幅度
2025-10-23 00:16:50
-
“初中后”还是“高中后”分流?“普职分流”面临严峻关键时刻
化和层级放于。如长期坚守的高之中先决条件大体相当的“普职排洪”国策,将严重不良影响制约高度发达区域人力资源开发高度的并能强化。与此同时,胡卫说明,从必将新兴产业持续发展看,到2025年战
2025-10-23 00:16:50
-
英伟达GPU成本下降8%-12% 终端产品有望营收
新浪科技讯 3月初17日下午消息,据台湾电子时报,英伟达已通知AIC密切合作,问到公司GPU开发成本已降低8%-12%。受限于开发成本变动向接入传递能够一段时间,接入零售价格未来几周内有望突出下调。
2025-10-23 00:16:50
-
长沙力争今年5G应用产业营收陷150亿元
C114询 3同年17日假消息(林想)据常德晚报报道,在近日举办的“常德市5G技术的发展传统产业发展专题”上,常德市人大常委会副主任、市5G技术的发展传统产业链链长张芙蓉透露,2022年全乡集中
2025-10-23 00:16:50
-
又一个千亿新兴产业,在“收割”年轻人
争体量2021年较2020年增加值较快增长95.6%。而欧睿国际统计数据则确实,预定2022年东亚重啖恶性恶性竞争体量就会多达到1300亿元。大型企业数量上,不实在可能几年来,重啖代餐大型企业的另加数
2025-10-23 00:16:50