机器学习——聚类算法

0、前言:

  • 机器学习聚类算法主要就是两类:K-means和DBSCAN
  • 聚类:一种无监督的学习,事先不知道类别(相当于不用给数据提前进行标注),自动将相似的对象归到同一个簇中

1、K-means:

  • 原理:先根据预先提供的k值,随机从数据中选k个点,然后分别计算所有点到这k个点之间的距离。根据它们距离k个点距离的远近对所有点进行分类,然后计算k个聚类簇的中心(用欧氏距离计算),再次对所有点计算它们距离k个聚类簇中心的距离,再次依据远近程度分类,直至k个聚类簇的中心不再变化为止。
  • 优缺点:优点是简单、快速,适合常规数据集,缺点是k值难确定,很难发现任意形状的簇。
  • 重要参数:n_clusters:聚类簇的个数(相当于k值)
  • 重要属性:cluster_centers_:聚类中心点的坐标;labels_:每个样本点的标签
  • 应用实例:图片压缩
python 复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans, DBSCAN
from sklearn.datasets import load_sample_image
# 生成多个分类图:2、4、16、64
# 1、导入图片数据
china = load_sample_image('china.jpg')
# 2、数据预处理改变维度保留颜色通道变为二位数据
china = china.reshape(-1,3)
display(china.shape) # (273280, 3)
# 3、随机选取10000个点作为训练数据
data_train = china.copy()
np.random.shuffle(data_train)
data_train = data_train[:10000]
display(data_train.shape) # (10000, 3)
# 4、训练绘制子图
plt.figure(figsize=(2*3,2*3))
for i,k in enumerate([2,4,16,64]):
    ax = plt.subplot(2,2,i+1)
    # 训练
    km = KMeans(k,n_init='auto')
    km.fit(data_train)
    # 获取所有簇中心的RGB值
    centers = km.cluster_centers_
    # 通过预测获取原图每个位置的分类标签
    label = km.predict(china)
    # 生成预测图
    final_img = centers[label]
    # 将预测图所有位置RGB值转化为0~256范围
    final_img = final_img/256
    ax.imshow(final_img.reshape(427,640,3))
    ax.set_title(f'K = {k}',fontsize=15)
    plt.imsave(f'./tupian{i}.png',final_img.reshape(427,640,3))
    



2、DBSCAN:

  • 原理:给定算法聚类半径和最小生成簇的样本数量,算法就会挨个计算所有样本周围的数据直到找到在聚类半径中所有的点,然后看这些点能否满足最小生成簇的样本数量,如果可以就是一个簇,否则就是噪点。

3、轮廓系数

  • 1、聚类算法的评估指标:轮廓系数,其计算公式如下,bi代表当前点到其他簇内的距离中最小的距离,ai代表当前点到所属簇内最大的距离。如果最终s值接近1,说明样本i聚类合理,接近-1,说明样本i更应该分类到另外的簇,接近0,表示样本在两个簇的边界。
  • 2、轮廓系数的求法:一般选用平均轮廓系数得分,轮廓系数中需要两个参数(data和labels):数据样本和数据样本对应的标签,所以一般是训练完聚类模型之后才能算出轮廓系数的得分。
  • 轮廓系数作用:对于K-means算法,通过遍历可能的k值,然后比较k值大小,轮廓系数越大说明k值越合适。对于DBSCAN算法,可以通过遍历半径参数,同理轮廓系数越大说明参数越合适。

相关推荐
江畔柳前堤3 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore4 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考5 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX6 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面7 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号7 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽7 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI7 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者9 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者9 小时前
【征程6】校准量化中HistogramObserver解析
算法