IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python k-means聚类(调包)分析 -> 正文阅读

[人工智能]python k-means聚类(调包)分析

原数据df3
在这里插入图片描述model_scaler = MinMaxScaler() # 建立MinMaxScaler模型对象
df4 = model_scaler.fit_transform(df3) # MinMaxScaler标准化处理

通过平均轮廓系数检验得到最佳KMeans聚类模型

score_list = list() # 用来存储每个K下模型的平局轮廓系数
silhouette_int = -1 # 初始化的平均轮廓系数阀值
for n_clusters in range(2, 8): # 遍历从2到5几个有限组
model_kmeans = KMeans(n_clusters=n_clusters) # 建立聚类模型对象
labels_tmp = model_kmeans.fit_predict(df4) # 训练聚类模型
silhouette_tmp = silhouette_score(df4, labels_tmp) # 得到每个K下的平均轮廓系数
if silhouette_tmp > silhouette_int: # 如果平均轮廓系数更高
best_k = n_clusters # 保存K将最好的K存储下来
silhouette_int = silhouette_tmp # 保存平均轮廓得分
best_kmeans = model_kmeans # 保存模型实例对象
cluster_labels_k = labels_tmp # 保存聚类标签
score_list.append([n_clusters, silhouette_tmp]) # 将每次K及其得分追加到列表
print(’{:*^60}’.format(‘K值对应的轮廓系数:’))
print(np.array(score_list)) # 打印输出所有K下的详细得分
print(‘最优的K值是:{0} \n对应的轮廓系数是:{1}’.format(best_k, silhouette_int))

#事先已经规定分为3类,所以直接n_clusters=3,若没规定,可用上步骤得到最佳的簇数。
kmeans = KMeans(n_clusters=3, random_state=0).fit(df)

可视化

labels = kmeans.labels_
centers = kmeans.cluster_centers_
markers = [‘o’, ‘^’, ‘*’]
colors = [‘r’, ‘b’, ‘y’]

#解决中文显示问题
plt.rcParams[‘font.sans-serif’]=[‘SimHei’]
plt.rcParams[‘axes.unicode_minus’] = False
plt.figure(figsize=(12,8), dpi=500)
plt.xlabel(‘总订单数’)
plt.ylabel(‘云豆数’)
plt.title(“聚类结果”)

画样本

for c in range(3):#聚的三类
cluster = df[labels == c]
plt.scatter(cluster[‘Integral’], cluster[‘云豆数’],
marker=markers[c], s=20, c=colors[c])

画出中心点

plt.scatter(centers[:, 0], centers[:, 1],
marker=‘o’, c=“white”, alpha=0.9, s=300)
for i, c in enumerate(centers):
plt.scatter(c[0], c[1], marker=’ %d ’ % i, s=50, c=colors[i])
在这里插入图片描述# 输出聚类后的每个样本点的标签(即类别)
df3[‘标签’]=kmeans.labels_

考虑各类别的特征分布************************

#打上标签后,对不同簇下面的其他特征在进行分析
数据样例,总兑换次数是包括本站、商城、小游戏和无类型四种的
在这里插入图片描述

计算每个聚类类别下的样本量和样本占比

centers = kmeans.cluster_centers_
clustering_count = pd.DataFrame(df3.groupby([‘标签’])[‘云豆数’].count())
clustering_ratio=clustering_count /len(df3)
print(clustering_count)
print("#"*30)
print(clustering_ratio)

计算各个聚类类别内部最显著特征值

cluster_features = [] # 空列表,用于存储最终合并后的所有特征信息
for line in range(3): # 读取每个类索引
label_data = df3[df3[‘标签’] == line] # 获得特定类的数据

part1_data = label_data.iloc[:, 2:9]  # 获得数值型数据特征
part1_desc = part1_data.describe().round(3)  # 得到数值型特征的描述性统计信息
merge_data1 = part1_desc.iloc[2, :]  # 得到数值型特征的均值

cluster_features.append( merge_data1)  # 将每个类别下的数据特征追加到列表

输出完整的类别特征信息

cluster_pd = pd.DataFrame(cluster_features).T # 将列表转化为矩阵
cluster_pd.columns=[0,1,2]
print(’{:*^60}’.format(‘每个类别主要的特征:’))
all_cluster_set = pd.concat((clustering_count.T, clustering_ratio.T, cluster_pd),axis=0) # 将每个聚类类别的所有信息合并
all_cluster_set

#各类别数据预处理
num_sets = cluster_pd.iloc[0:8, :].T.astype(np.float64) # 获取要展示的数据
num_sets_max_min = model_scaler.fit_transform(num_sets) # 获得标准化后的数据

画图

fig = plt.figure(figsize=(10,10)) # 建立画布
ax = fig.add_subplot(111, polar=True) # 增加子网格,注意polar参数
labels = np.array(cluster_pd.index) # 设置要展示的数据标签
cor_list = [‘g’, ‘r’, ‘y’, ‘b’] # 定义不同类别的颜色
angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False) # 计算各个区间的角度
angles = np.concatenate((angles, [angles[0]])) # 建立相同首尾字段以便于闭合
labels = np.concatenate((labels, [angles[0]]))# 建立相同首尾字段以便于闭合

画雷达图

for i in range(len(num_sets)): # 循环每个类别
data_tmp = num_sets_max_min[i, :] # 获得对应类数据
data = np.concatenate((data_tmp, [data_tmp[0]])) # 建立相同首尾字段以便于闭合
ax.plot(angles, data, ‘o-’, c=cor_list[i], label=“第%d类”%(i)) # 画线
ax.fill(angles, data,alpha=2.5)

设置图像显示格式

ax.set_thetagrids(angles * 180 / np.pi, labels, fontproperties=“SimHei”) # 设置极坐标轴
ax.set_title(“各聚类类别特征对比”, fontproperties=“SimHei”) # 设置标题放置
ax.set_rlim(-0.2, 1.2) # 设置坐标轴尺度范围
plt.legend(loc=“upper right” ,bbox_to_anchor=(1.2,1.0)) # 设置图例位置

plt.bar([‘第0类’,‘第1类’,‘第2类’],clustering_ratio[‘云豆数’])
plt.title(“类别占比”,)
在这里插入图片描述

聚类结果可视化参考:
https://www.jianshu.com/p/c40181e41b96
聚类结果特征分析
https://blog.csdn.net/weixin_38753213/article/details/107031845?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 11:52:51  更:2021-10-19 11:54:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:48:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码