首页 > 编程语言 >机器学习篇-day08-聚类Kmeans算法

机器学习篇-day08-聚类Kmeans算法

时间:2024-10-16 21:49:37浏览次数:10  
标签:day08 pred kmeans Kmeans range plt 聚类 100

一. 聚类算法简介

概念

无监督学习算法

根据样本之间的相似性,将样本划分到不同的类别中;不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。

聚类算法的目的是在没有先验知识的情况下,自动发现数据集中的内在结构和模式。

使用不同的聚类准则, 产生的聚类结果不同

应用场景

聚类算法分类

根据聚类颗粒度分类

根据实现方法分类

  1. K-means:按照质心分类,主要介绍K-means,通用、普遍

  2. 层次聚类:对数据进行逐层划分,直到达到聚类的类别个数

  3. DBSCAN聚类是一种基于密度的聚类算法

  4. 谱聚类是一种基于图论的聚类算法

总结

聚类概念

无监督学习算法,主要用于将相似的样本自动归到一个类别中;计算样本和样本之间的相似性,一般使用欧式距离

聚类分类

颗粒度:粗聚类、细聚类。

实现方法: K-means聚类、层次聚类、 DBSCAN聚类、谱聚类

二. API

Kmeans算法的API

Kmeans-API实践

聚类算法API

构造数据API

数据-结果

流程

代码

import os
​
os.environ["OMP_NUM_THREADS"] = '4'     # 解决内存泄露警告
​
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.metrics import calinski_harabasz_score
import matplotlib.pyplot as plt
​
​
# 1. 构建数据集
# x是样本(点的横纵坐标), y是标签
x, y = make_blobs(
    n_samples=1000,  # 样本数
    n_features=2,  # 特征数: x, y
    centers=[[-1, -1], [0, 0], [1, 1], [2, 2]],  # 聚类中心, 也可以写数字表示中心点的数量
    cluster_std=[0.4, 0.2, 0.2, 0.2],  # 聚类标准差, 默认为1, 也可以写数字表示所有点的标准差
    random_state=21
)
# print(x)
# print(y)
# 绘图显示数据集
plt.figure()
plt.scatter(x[:, 0], x[:, 1], marker='o')
plt.show()
​
​
# 2. 模型训练预测
model = KMeans(
    n_clusters=4,   # 蕨类中心的数量 
    random_state=21
)
y_pred = model.fit_predict(x)
​
​
# 3. 显示聚类效果
plt.scatter(x[:, 0], x[:, 1], c=y_pred)
plt.show()
​
​
# 4. 模型评估
print(calinski_harabasz_score(x, y_pred))

结果

三. ★Kmeans实现流程

★实现流程原理

  1. 事先确定常数K ,常数K意味着最终的聚类类别数

  2. 随机选择K 个样本点作为初始聚类中心

  3. 计算每个样本到 K 个中心的距离,选择最近的聚类中心点作为标记类别

  4. 根据每个类别中的样本点,重新计算出新的聚类中心点(各聚类类别内点的平均值),如果计算得出的新中心点与原中心点一样则停止聚类,否则重新进行第 2 步过程直到聚类中心不再变化

举例说明

原始数据

流程

  1. 随机设置K个特征空间内的点作为初始的聚类中心(本案例中设置p1和p2)

  2. 对于其他每个点计算到K个中心的距离,选择最近的一个聚类中心点作为标记类别

  3. 接着对标记的聚类中心,重新计算每个聚类的新中心点(平均值)

  4. 如果计算得出的新中心点与原中心点一样(质心不再移动),那么结束,否则重新进行第二步过程【经过判断,需要重复上述步骤,开始新一轮迭代】

总结

四. ★★模型评估方法

SSE聚类评估指标

标签:day08,pred,kmeans,Kmeans,range,plt,聚类,100
From: https://blog.csdn.net/m0_60916732/article/details/142962471

相关文章

  • Golang笔记_day08
    Go面试题(一)1、空切片和nil切片区别空切片:   空切片是指长度和容量都为0的切片。它不包含任何元素,但仍然具有切片的容量属性。在Go语言中,可以使用内置的make函数创建一个空切片,例如:emptySlice:=make([]int)   这个语句创建了一个长度为0、容量为0的空切片......
  • 【关联规则挖掘算法‌】基于聚类的关联规则挖掘算法
    目录一、基于聚类的关联规则挖掘算法概述1.1K-Means算法1.2K-Means++算法1.3DBSCAN算法1.4层次聚类算法二、基于聚类的关联规则挖掘算法优缺点和改进2.1  基于聚类的关联规则挖掘算法优点2.2  基于聚类的关联规则挖掘算法缺点2.3  基于聚类的关联规则挖掘算......
  • K-means 算法、层次聚类、密度聚类对鸢尾花(Iris)数据进行聚类
    目录1.基础知识1.1 K-Means算法1.2 层次聚类(HierarchicalClustering)1.3 密度聚类(DBSCAN)1.4 距离和相似度度量方法1.5总结:2.K-means算法对鸢尾花(Iris)数据进行聚类2.1导入所需的模块2.1.1代码片段:2.1.2实现目的:2.1.3代码解释:2.2加载并标准化鸢尾花数据......
  • Kmeans2D数据类别划分
    读取数据:importpandasaspdimportnumpyasnpdata=pd.read_csv('data_2D.csv')data.head()读取输入及标签(标签用于后期对比观察模型结果):X=data.drop(['labels'],axis=1)y=data.loc[:,'labels']y.head() 观察标签数量打印图像#观察类数pd.value_counts(y......
  • 聚类分析
    聚类分为两种:对样品分类,Q型;对变量(指标)分类,R类。Q型样品空间的相似度——距离常见的距离描述方法:欧几里得距离:MATLAB自带函数计算d=pdist(x)%每个行向量代表一个坐标绝对距离:\(d(x_i,y_i)=\sum_{k=1}^p|x_{ik}-x_{jk}|\)d=pdist(x,'cityblock')%也叫曼哈顿距离......
  • 鸢尾花数据-朴素贝叶斯、PCA,高斯混合聚类
    目录1.导入相关模块2.导入数据和画图3.分割数据有监督学习示例:鸢尾花数据分类4.高斯朴素贝叶斯无监督学习示例:鸢尾花数据降维5.PCA数据降维无监督学习示例:鸢尾花数据聚类6.高斯混合模型1.导入相关模块importnumpyasnpimprortpandasaspdimportmatplotlib.pyplotasplt......
  • “降维模糊C均值(PCA-FCM)”创新算法的聚类与可视化
    在这篇博客中,我们将探讨一个MATLAB代码示例,它展示了如何从Excel文件导入数据,进行模糊C均值(FCM)聚类,并通过2D和3D图形可视化聚类结果。让我们一步一步地深入这个过程!1.环境准备首先,我们需要清空工作环境,以确保没有旧变量干扰我们的结果。这可以通过以下几行代码实现:clear;cl......
  • 洛谷P10336 [UESTCPC 2024] 2-聚类算法
    涉及知识点:博弈、贪心题意Alice和Bob在玩选点游戏,所有的点在一个\(k\)维空间中,他们轮流选走一个点放入自己的集合中,Alice先手。定义集合\(S\)的权值\(val(S)\)为集合中点两两之间的\(k\)维曼哈顿距离之和。Alice的得分为\(val(S_A)-val(S_B)\),Bob的得分为\(val(......
  • Day08-常量、变量、作用域
    变量、常量、作用域变量变量是可以变化的量。Java是强类型语言,每个变量都须声明类型。Java变量是程序中最基本的存储单元,要素包括变量名、变量类型和作用域。其声明格式为typevarName[=value][{,varName[=value]}];//可在同一行内为多个变量赋值,但不建议这样做//数......
  • Day08——强制转换
    类型转换由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。类型的优先级低----------------------------------------------------------->高byte,short,char->int->long->float->double运算中,不同类型的数据先转化为同一类型,然后进行运算。//内存溢出......