文章目录

  • 一、数据集探索
  • 二、数据预处理
  • 三、构建模型获取结果
  • 四、聚类结果可视化
  • 五、聚类模型评估
    • ① 轮廓系数
    • ② 卡林斯基 - 哈拉巴斯指数
    • ③ FMI评价法

一、数据集探索

Seeds 数据集存放了不同品种小麦种子的区域周长压实度籽粒长度籽粒宽度不对称系数籽粒腹沟长度以及类别数据。该数据集总共210条记录、7个特征、一个标签,标签分为3类。

# 1.读取数据集
data = pd.read_csv("./data/seeds_datas.csv")
x = data.iloc[:,1:8]
target = data.iloc[:,-1]

X:

target:

返回顶部


二、数据预处理

  • 不同特征之间往往具有不同的量纲,由此所造成的数值间的差异可能很大,在涉及空间距离计算或梯度下降法等情况的时候不对其进行处理会影响到数据分析结果的准确性。为了消除特征之间的量纲和取值范围差异可能会造成的影响,需对数据进行标准化处理,也可以称为规范化处理。
  • 在这里我们对数据集进行标准差标准化处理。
# 2.对数据集进行离差标准化处理
MMS = MinMaxScaler().fit(x)
x_ = MMS.transform(x)

处理后的数据集:

返回顶部


三、构建模型获取结果

# 3.构建KMeans聚类模型
cluster = KMeans(n_clusters=3,random_state=123).fit(x_)
# 3.1 获取聚类质心
center = cluster.cluster_centers_
# [[0.75733298 0.79374354 0.69419238 0.73003765 0.76950062 0.36757645,  0.75709318], [0.1233337  0.17513685 0.37817899 0.18671025 0.16252742 0.49856915,  0.27928792], [0.38349003 0.4198407  0.67120387 0.36468534 0.46849918 0.26417688,  0.31838389]]
# 3.2 获取聚类标签
pre_target = cluster.labels_
# 3.3 获取簇内平方和
inertia = cluster.inertia_ # 22.024363075666038

返回顶部


四、聚类结果可视化

  • 这里我们的数据集是多维(包含七个特征),我们需要对其进行降维处理,降到二维平面使用散点图来进行展示。
  • 这里的降维采用TSNE。t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 等在08年提出来。此外,t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可视化
# 4.聚类结果可视化
from sklearn.manifold import TSNE
# 4.1 降维处理数据
tsne = TSNE(n_components=2,init='random',random_state=144).fit(x_)
df = pd.DataFrame(tsne.embedding_)
df['labels'] = pre_target
  • 降维后的数据集
df1 = df[df['labels'] == 0]
df2 = df[df['labels'] == 1]
df3 = df[df['labels'] == 2]
# 绘制画布
fig = plt.figure(figsize=(9,6))
plt.plot(df1[0],df1[1],'bo',df2[0],df2[1],'r*',df3[0],df3[1],'gD')
plt.show()

返回顶部


五、聚类模型评估

KMeans聚类模型评估指标参见:【skLearn 聚类算法】KMeans

① 轮廓系数

# 5.1 轮廓系数法
from sklearn.metrics import silhouette_score
silhouetteScore = []
for i in range(2,15):# 构建聚类模型kmeans = KMeans(n_clusters=i,random_state=111).fit(x_)score = silhouette_score(x_,kmeans.labels_)silhouetteScore.append(score)
plt.figure(figsize=(10,8))
plt.plot(range(2,15),silhouetteScore,linewidth=1.5,linestyle='-')
plt.axvline(x=3, color="red", linestyle="--")
plt.axvline(x=4, color="red", linestyle="--")
plt.show()
  • 在这里我们获取轮廓系数score是所有样本的轮廓系数均值,如果要获取每个样本的轮廓系数应当使用silhouette_samples。这里是针对超参数k(n_cluster),所以采用轮廓系数均值进行评估。
  • 聚类数目为2、3和3、4的时候,图形的畸变程度最大。本身数据集就是关于3类小麦种子的,侧面说明了聚类为3的时候效果较好。

返回顶部


② 卡林斯基 - 哈拉巴斯指数

# 5.2 卡林斯基-哈拉巴斯指数
from sklearn.metrics import calinski_harabasz_score
chs = []
for i in range(2,15):# 构建聚类模型kmeans = KMeans(n_clusters=i,random_state=112).fit(x_)chsScore = calinski_harabasz_score(x_,kmeans.labels_)chs.append(chsScore)
plt.figure(figsize=(10, 8))
plt.plot(range(2, 15), chs, linewidth=1.5, linestyle='-')
plt.show()
  • 由图可以看出,当n_cluster=2、3的时候,FMI评分都较高,聚类效果也都相对较好。

返回顶部


③ FMI评价法

# 5.3 FMI评价法 --- 需要有真实标签
from sklearn.metrics import fowlkes_mallows_score
fms = []
for i in range(2,15):# 构建聚类模型kmeans = KMeans(n_clusters=i,random_state=112).fit(x_)fmsScore = fowlkes_mallows_score(target,kmeans.labels_)fms.append(fmsScore)
plt.figure(figsize=(10, 8))
plt.plot(range(2, 15), fms, linewidth=1.5, linestyle='-')
plt.show()
  • 由图可以看出,当n_cluster=3的时候,FMI评分最高,聚类效果较好。

返回顶部


原码及数据集获取:https://download.csdn.net/download/qq_45797116/73374470

【sklearn练习】KMeans ---- Seeds(小麦种子)数据集聚类评估相关推荐

  1. sklearn之k-means聚类算法

    听了菜菜的sklearn算法而写的学习笔记 概述 无监督学习与有监督学习 结构化数据与非结构化数据 聚类算法与分类算法 sklearn中的聚类算法 KMeans一最简单的聚类算法 KMeans算法工作 ...

  2. 利用sklearn中的Kmeans对seeds_dataset数据集进行分类分析

    目录 前言 一.k-means主要步骤 二.数据集 三.不使用PCA降维 1.读入数据 2.找簇心 3.训练以及评估 4.完整代码 四.使用PCA降维 五.对比结果 前言 本篇文章是主要讲述利用skl ...

  3. 通过K-means对iris数据集进行处理 Kmeans聚类算法实例

    Python from sklearn import datasets import matplotlib.pyplot as plt from sklearn.cluster import KMea ...

  4. Kmeans聚类:啤酒数据集聚类

    今日分享:啤酒数据集聚类 一:流程 1.利用pandas库读取数据集文件,加载数据,选取目标数据用于训练 2.使用kmeans模型进行聚类训练 3.使用matpotlib库以可视化的方式来展示聚类效果 ...

  5. 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

    import numpy as np x=np.random.randint(1,100,[20,1]) #在1-100范围中产生20行1列的随机数组 y=np.zeros(20) k=3 #取数据中 ...

  6. ML之K-means:基于(完整的)手写数字图片识别数据集利用K-means算法实现图片聚类

    ML之K-means:基于(完整的)手写数字图片识别数据集利用K-means算法实现图片聚类 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 metrics.adjusted_ran ...

  7. 机器学习 | 聚类评估指标

    文章目录 1. 聚类评估指标 1.1 外部评估指标 RI 兰德指数 ARI 调整兰德指数 Jaccard JC指数 FMI FMI指数 MI 互信息 NMI 归一化互信息 AMI 调整互信息 1.2 ...

  8. Sklearn之KMeans算法

    K-Means算法原理 K-means的优缺点 优点: 1.算法快速.简单; 2.对大数据集有较高的效率并且是可伸缩性的; 3.时间复杂度近于线性,而且适合挖掘大规模数据集.K-Means聚类算法的时 ...

  9. 聚类(六)—— 聚类评估

    主要内容 聚类分析概述 K-Means聚类 层次聚类 基于密度的聚类 其他聚类方法 聚类评估 小结 六.聚类评估 聚类评估用于对在数据集上进行聚类的可行性和被聚类方法产生的结果的质量进行评估.聚类评估 ...

最新文章

  1. 坑系列 --- 时间和空间的平衡
  2. 【发布】温度监测报警器v1.1a内测版!
  3. Boost:基于boost::asio模块引用计数程序
  4. Apache Camel请向我解释这些端点选项的含义
  5. 动态样式计算 动态样计算 <span :style=“{‘left‘:`${(l+1)*16 - 6}`+‘px‘}“></span>
  6. oracle map order,oracle面向对象技术中的map和order方法有何不同?
  7. mysql数据库和表的关系_MySQL数据库学习【第六篇】表与表之间的关系
  8. 爬虫实例十二 沪深证券股票全站数据爬取
  9. 5900x matlab,芯片工程师入手5900X平台,简单自用工具评测
  10. 鸡兔同笼c语言编程穷举,C语言程序设计100例之(1):鸡兔同笼
  11. 分享124个ASP源码,总有一款适合您
  12. log4j在线视频教程【讲的很详细,不了解的情况下,听一遍就都了解】
  13. MYSQL8.0修改密码(仅限于修改密码)
  14. 汇编指令MCR/MRC
  15. 企业信息化改革怎么做?
  16. 最强整理!写给程序员的Flutter详细教程,大厂直通车!
  17. 思必驰CMO龙梦竹:万物可沟通,万事可打理|量子位沙龙回顾
  18. JAVA将MP3转为WAV(实现百度语音转译)
  19. 制作一个简单的Android版的音乐播放器
  20. 36 张图带你理解,计算机网络 6 大基础知识点

热门文章

  1. bitwise const和logic constness---龙之介《Effective C++》实验室
  2. html5 字体嵌入,网页中嵌入特殊字体(@font-face)
  3. 当听障人士实现手语自由:手语AI平台的产业狂想
  4. MS SQL入门基础:数据库缺省值
  5. Erlang中的nif
  6. Mac 电脑笔记本快速锁屏 锁屏快捷键
  7. Windows API——SendInput总结(模拟键盘鼠标动作)
  8. 删除列表中重复值,重复值保留一个
  9. CSS 的快乐:画一个可爱的三只小鸟 Button
  10. 1102 Invert a Binary Tree (25point(s))