说明

最近做聚类分析,记录一下聚类后,利用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聚类、以及二维、三维可视化相关推荐

  1. 地图二维三维的Web开发

    地图二维三维的Web开发 随着互联网技术的发展和普及,地理信息系统(GIS)也从传统的桌面应用逐渐向Web平台转移,实现了在浏览器中展示和交互地理空间数据的功能.这种基于Web技术和GIS技术的应用开 ...

  2. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  3. 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- ...

  4. 深度学习应用篇-计算机视觉-语义分割综述[5]:FCN、SegNet、Deeplab等分割算法、常用二维三维半立体数据集汇总、前景展望等

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

  5. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  6. k近邻算法C++二维情况下的实现

    k近邻算法C++二维实现 这是一个k近邻算法的二维实现(即K=2的情况). #include <cstdio> #include <cstring> #include < ...

  7. Matlab中矩阵编号方式以及一维二维三维数据间的相互转换

    Matlab中矩阵编号方式以及一维二维三维数据间的相互转换 文章目录 Matlab中矩阵编号方式以及一维二维三维数据间的相互转换 一.问题的提出 二.一维数据转为二维和三维 三.三维数据转为一维和二维 ...

  8. 最新CAD机械二维三维图块集

    对于机械类CAD模型的需求远远超乎我们的想象,今天给大家分享的是我们最新的CAD机械二维三维图块模型!对于这些模型可在专业的迅捷CAD每日一图获取,迅捷CAD每日一图最新CAD机械二维三维图块集主要包 ...

  9. MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 colorbar

    MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 自己在编程的时候,没有在网上找到很好的解释. 所以把我的代码贴出来,给遇到同样问题的盆友一个参考~ 带注释.看不懂的地方可以给我 ...

  10. 图形学(8)二维三维图形变换

    本模块内容绝大部分是在慕课上看中国农业大学网客时的笔记,因此算作转载,在此鸣谢赵明.李振波两位老师,感谢他们录制该门课程供大家学习! 在使用计算机处理图像时,我们不可避免对图形的位置.大小.形状等进行 ...

最新文章

  1. Linux镜像如何添加驱动,安装virtio驱动(Linux)
  2. 项目经理怎么在两周内熟悉一个项目的业务?
  3. NYOJ 70 阶乘因式分解(二)
  4. Sqoop(一)安装及基本使用
  5. python中如何打印两行代码间的空行_python 打印几行空行、 打印不换行
  6. spark写出分布式的训练算法_利用 Spark 和 scikit-learn 将你的模型训练加快 100 倍...
  7. jaxb需要jar包吗_JAXB –不需要注释
  8. 用c语言绘制自定义图形,Android使用自定义View绘图
  9. synchronized(八)
  10. 别动我的代码!聊聊那些代码保护的艺术
  11. php格式转换rar,如何在PHP中创建压缩的RAR文件?
  12. 黑马程序员——Java基础知识——泛型、枚举
  13. iOS开发60分钟入门
  14. python猴子分桃子的数学题_python编程练习-分桃子
  15. 亚马逊获20亿美元信用额度:有助新业务投资
  16. python的一些技巧操作,提高编码效率
  17. 怎么创建dllwenjian_怎样新建一个*.dll的文件?
  18. mysql中的锁(表锁,行锁)
  19. mysql50条必看语句,对MySql经常使用语句的全面总结(必看篇)
  20. Android小项目————聊天室(UI篇)

热门文章

  1. 注意力机制的详细理解
  2. 爬虫学习经验分享-------某点评网站
  3. 主板CMOS电池异常耗电维修一例
  4. 【文献阅读】Faces of emotion in Parkinsons disease
  5. scrapy爬取豆瓣电影教程
  6. U盘制作-BGA焊接练习
  7. 关于js中 0 == ‘ ‘ 为 true 的问题
  8. BAMBOOROSY编舞,灵感来自THE SEA【大型圣诞狂欢派对系列宣传】
  9. 鸿蒙系统小白,站在小白用户的立场上看待华为的鸿蒙系统
  10. vscode在html看到图片的插件_利用花瓣插件 下载高清大图