k-means聚类、以及二维、三维可视化
说明
最近做聚类分析,记录一下聚类后,利用PCA将特征降维到二维、三维,进行聚类可视化的方法
数据处理和EDA部分就不放在这里了,有兴趣的可以点击下方链接看完整的项目,fork后可以看到完整代码,可下载也可以在线运行:
关于大五人格测试数据集的探索【可视化分析+k-means聚类分析】¶
一、数据展示
df2 = df.iloc[:,0:50]
df3 = df2.copy()
df2.head()
二、构建k-means模型
我这里聚类数目为4类
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=4)
k_fit = kmeans.fit(df2)
predictions = k_fit.labels_
df2['Clusters'] = predictions
df2.head()
查看不同类别的数目
Clu_nums = df2['Clusters'].value_counts()
Clu_nums
0 160727
1 152405
3 145982
2 139999
Name: Clusters, dtype: int64
三、可视化聚类结果
3.1 二维可视化聚类结果
这里使用df3是因为df2做了一些计算分析,如果直接可视化,还用df2就行,不过因为df3是拷贝的df2的数据,所以没有影响
from sklearn.decomposition import PCApca = PCA(n_components=2)
pca_fit = pca.fit_transform(df3)df_pca = pd.DataFrame(data=pca_fit, columns=['PCA1', 'PCA2'])
df_pca['Clusters'] = predictions
df_pca.head()
plt.figure(figsize=(10,10))
sns.scatterplot(data=df_pca, x='PCA1', y='PCA2', hue='Clusters', palette='tab10', alpha=0.8)
plt.title('Personality Clusters after PCA');
3.2 三维可视化聚类结果
pca2 = PCA(n_components=3)
pca_fit2 = pca2.fit_transform(df3)df_pca2 = pd.DataFrame(data=pca_fit2, columns=['PCA1', 'PCA2', 'PCA3'])
df_pca2['Clusters'] = predictions
df_pca2.head()
from mpl_toolkits.mplot3d import Axes3Dfig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(111, projection='3d')
x = df_pca2['PCA1']
y = df_pca2['PCA2']
z = df_pca2['PCA3']
ax.scatter(x, y, z,c = predictions, cmap="jet", marker="o")
plt.title("KMeans (N = 4)");
ax.set_xlabel('PCA1')
ax.set_ylabel('PCA2')
ax.set_zlabel('PCA3')
四、其他
1.我的数据单位是相同的,而且数值范围统一,我就没做数据归一化,如果有需求别忘了
2.在这个项目里面,因为数据量太大,我没有找轮廓系数最有的聚类个数
,但是代码还是值得记录一下的
# 通过平均轮廓系数检验得到最佳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(X) # 训练聚类模型silhouette_tmp = silhouette_score(X, 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))
k-means聚类、以及二维、三维可视化相关推荐
- 地图二维三维的Web开发
地图二维三维的Web开发 随着互联网技术的发展和普及,地理信息系统(GIS)也从传统的桌面应用逐渐向Web平台转移,实现了在浏览器中展示和交互地理空间数据的功能.这种基于Web技术和GIS技术的应用开 ...
- OpenCV的k - means聚类 -对图片进行颜色量化
OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...
- matlab 三维数组运算,MATLAB二维三维画图仿真数组运算
MATLAB二维三维画图仿真数组运算 1. 数学 (1) 数组运算: x=[1 2 3 4]; y=[3 4 5 6]; z=x+y %数组x与数组y相加得到数组z z = 4 6 8 10 z=x- ...
- 深度学习应用篇-计算机视觉-语义分割综述[5]:FCN、SegNet、Deeplab等分割算法、常用二维三维半立体数据集汇总、前景展望等
[深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...
- OpenCV官方文档 理解k - means聚类
理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...
- k近邻算法C++二维情况下的实现
k近邻算法C++二维实现 这是一个k近邻算法的二维实现(即K=2的情况). #include <cstdio> #include <cstring> #include < ...
- Matlab中矩阵编号方式以及一维二维三维数据间的相互转换
Matlab中矩阵编号方式以及一维二维三维数据间的相互转换 文章目录 Matlab中矩阵编号方式以及一维二维三维数据间的相互转换 一.问题的提出 二.一维数据转为二维和三维 三.三维数据转为一维和二维 ...
- 最新CAD机械二维三维图块集
对于机械类CAD模型的需求远远超乎我们的想象,今天给大家分享的是我们最新的CAD机械二维三维图块模型!对于这些模型可在专业的迅捷CAD每日一图获取,迅捷CAD每日一图最新CAD机械二维三维图块集主要包 ...
- MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 colorbar
MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 自己在编程的时候,没有在网上找到很好的解释. 所以把我的代码贴出来,给遇到同样问题的盆友一个参考~ 带注释.看不懂的地方可以给我 ...
- 图形学(8)二维三维图形变换
本模块内容绝大部分是在慕课上看中国农业大学网客时的笔记,因此算作转载,在此鸣谢赵明.李振波两位老师,感谢他们录制该门课程供大家学习! 在使用计算机处理图像时,我们不可避免对图形的位置.大小.形状等进行 ...
最新文章
- Linux镜像如何添加驱动,安装virtio驱动(Linux)
- 项目经理怎么在两周内熟悉一个项目的业务?
- NYOJ 70 阶乘因式分解(二)
- Sqoop(一)安装及基本使用
- python中如何打印两行代码间的空行_python 打印几行空行、 打印不换行
- spark写出分布式的训练算法_利用 Spark 和 scikit-learn 将你的模型训练加快 100 倍...
- jaxb需要jar包吗_JAXB –不需要注释
- 用c语言绘制自定义图形,Android使用自定义View绘图
- synchronized(八)
- 别动我的代码!聊聊那些代码保护的艺术
- php格式转换rar,如何在PHP中创建压缩的RAR文件?
- 黑马程序员——Java基础知识——泛型、枚举
- iOS开发60分钟入门
- python猴子分桃子的数学题_python编程练习-分桃子
- 亚马逊获20亿美元信用额度:有助新业务投资
- python的一些技巧操作,提高编码效率
- 怎么创建dllwenjian_怎样新建一个*.dll的文件?
- mysql中的锁(表锁,行锁)
- mysql50条必看语句,对MySql经常使用语句的全面总结(必看篇)
- Android小项目————聊天室(UI篇)
热门文章
- 注意力机制的详细理解
- 爬虫学习经验分享-------某点评网站
- 主板CMOS电池异常耗电维修一例
- 【文献阅读】Faces of emotion in Parkinsons disease
- scrapy爬取豆瓣电影教程
- U盘制作-BGA焊接练习
- 关于js中 0 == ‘ ‘ 为 true 的问题
- BAMBOOROSY编舞,灵感来自THE SEA【大型圣诞狂欢派对系列宣传】
- 鸿蒙系统小白,站在小白用户的立场上看待华为的鸿蒙系统
- vscode在html看到图片的插件_利用花瓣插件 下载高清大图