机器学习: k-means聚类对数据进行预分类

简介: 机器学习: k-means聚类对数据进行预分类

k-means聚类

非监督学习

把数据划分为k个类别

-知道类别个数

-不知道类别个数 超参数

k = 3

步骤:

1、随机在数据中抽取3个样本,当做3个类别的中心点(k1, k2, k3)

2、计算其余的点分别到这三个中心点的距离,

每一个样本有3个距离(a, b, c)

从中选出举例最近的一个点作为自己的标记,行成3个族群

3、分别计算这3个族群的平均值,把3个平均值与之前的3个旧中心点进行比较

4、如果相同结束聚类,如果不同,把这3个平均值当做新的中心点重复第2步

聚类评估标准

轮廓系数

计算公式

屏幕截图 2021-11-23 114753.png

对于每个点i 为已聚类数据中的样本,

bi为i 到其他族群的所有样本的距离最小值

ai为i 到本身族群的距离平均值

最终计算出所有样本点的轮廓系数平均值

极端:

bi>>aisci=1 完美

ai>>bisci=1 最差

轮廓系数取值[-1, 1]

总结

采用迭代算法,直观易懂并且非常实用


缺点:容易收敛到局部最优解(多次聚类)

聚类,用在分类之前

代码示例

# -*- coding: utf-8 -*-
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
# 生成数据
X, y = make_blobs(n_samples=200, centers=3, n_features=5, random_state=0)
# k-means聚类
km = KMeans(n_clusters=3)
km.fit(X)
y_predict = km.predict(X)
# 评估聚类效果
print(silhouette_score(X, y_predict))
# 0.72
# 绘制聚类结果图
color = ["red", "green", "blue"]
colors = [color[i] for i in y_predict]
plt.figure()
plt.scatter(X[:, 1], X[:, 2], color=colors)
plt.savefig("a.png")

20190126223935498.png

相关文章
vue+element Form键盘回车事件页面刷新解决
问题描述:如下代码所示,使用element-ui 中的el-form组件对table进行条件查询,当查询条件仅有一项时,使用@keyup.
1785 0
|
Java 数据库连接 Spring
深入了解数据校验(Bean Validation):从深处去掌握@Valid的作用(级联校验)以及常用约束注解的解释说明【享学Java】(下)
深入了解数据校验(Bean Validation):从深处去掌握@Valid的作用(级联校验)以及常用约束注解的解释说明【享学Java】(下)
深入了解数据校验(Bean Validation):从深处去掌握@Valid的作用(级联校验)以及常用约束注解的解释说明【享学Java】(下)
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
824 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
880 56
|
数据采集 机器学习/深度学习 人工智能
【机器学习】在使用K-means算法之前,如何预处理数据?
【5月更文挑战第12天】【机器学习】在使用K-means算法之前,如何预处理数据?
|
存储 移动开发 前端开发
HTML5 的新特性
【8月更文挑战第24天】
313 0
|
开发框架 前端开发 JavaScript
基于SqlSugar的开发框架循序渐进介绍(18)-- 基于代码生成工具Database2Sharp,快速生成Vue3+TypeScript的前端界面和Winform端界面
基于SqlSugar的开发框架循序渐进介绍(18)-- 基于代码生成工具Database2Sharp,快速生成Vue3+TypeScript的前端界面和Winform端界面
|
SQL 关系型数据库 MySQL
Hadoop-25 Sqoop迁移 增量数据导入 CDC 变化数据捕获 差量同步数据 触发器 快照 日志
Hadoop-25 Sqoop迁移 增量数据导入 CDC 变化数据捕获 差量同步数据 触发器 快照 日志
172 0
|
小程序 JavaScript 前端开发
【原力计划小程序】1、一篇文章深入了解小程序的学习路线(以项目驱动的方式带你学习微信小程序)
🎄 随着社会的发展(四级经典开头😄With the development of society),越来越多的人开始使用微信小程序 🎄 虽然博主从事的是 Java 后台开发,但前端也是我的爱好之一,并且小程序如此好用、小程序如此流行、小程序越来越受到大家的喜爱,我怎能不投其所好?怎能不跟紧社会的步伐呢?📱 🎄 大概是2019年,博主偶然刷到一个讲解微信小程序开发的视频。女老师👩‍🏫介绍到:学习微信小程序需要掌握 JavaScript,于是博主果断放弃了微信小程序开发。当时我大二,啥也不会,只知道玩:video_game:,不挂科就不错了,完全不会写代码👨‍💻) 🎄 大
622 0
【原力计划小程序】1、一篇文章深入了解小程序的学习路线(以项目驱动的方式带你学习微信小程序)
OpenCV-图像锐化
OpenCV-图像锐化
377 0

热门文章

最新文章