首页 > 编程语言 >日新月异 PyTorch - pytorch 基础: K-means 聚类算法(sklearn.cluster 的 KMeans 实现,对一个包含 10 个特征的数据做分类)

日新月异 PyTorch - pytorch 基础: K-means 聚类算法(sklearn.cluster 的 KMeans 实现,对一个包含 10 个特征的数据做分类)

时间:2024-09-24 15:28:07浏览次数:9  
标签:10 means torch KMeans centroids cluster pytorch data

源码 https://github.com/webabcd/PytorchDemo
作者 webabcd

日新月异 PyTorch - pytorch 基础: K-means 聚类算法(sklearn.cluster 的 KMeans 实现,对一个包含 10 个特征的数据做分类)

示例如下:

basic\demo07.py

'''
K-means 聚类算法(sklearn.cluster 的 KMeans 实现,对一个包含 10 个特征的数据做分类)

K-means 聚类算法是一种把数据分成 k 个组的聚类算法
它先随机选出 k 个数据点作为初始的簇中心,然后计算每个数据点到每个簇中心的距离,把每个数据点分配给距离它最近的那个簇中心,然后根据已有的数据点重新计算簇中心
这个过程会重复进行,直到满足某个条件,例如没有数据点需要重新分配或没有簇中心再变化,或者误差最小


.pt 文件通常用于存储 PyTorch 模型的状态字典(state_dict)、模型结构、模型权重等相关信息。训练一个神经网络模型后,如果想要保存其状态、模型的结构和参数等,则可以保存文 .pt 文件
'''

import torch
from sklearn.cluster import KMeans
import numpy as np

def sample1():
    # 指定聚类的数量(即簇的数量)
    n_clusters = 5
    # 定义容差,用于判断算法是否收敛到最优解
    tolerance = 1e-5
    # 定义最大迭代次数
    max_iter = 300
    # 定义初始中心点的随机初始化次数
    n_init = 5

    # 测试数据(100 个数据点,每个数据点有 10 个特征)
    data_tensor = torch.randn(100, 10) 
    data_np = data_tensor.numpy()

    # 实例化 KMeans 对象
    kmeans = KMeans(n_clusters=n_clusters, tol=tolerance, n_init=n_init, max_iter=max_iter)
    # 对指定的数据做聚类分析
    kmeans.fit(data_np)

    # 获取簇中心点的位置
    centroids = torch.tensor(kmeans.cluster_centers_) # shape: 5,10
    # 获取测试数据中,每个数据点所属的簇索引
    cluster_assignment = torch.tensor(kmeans.labels_) # shape: 100

    print("centroids: ", centroids)
    print("cluster_assignment: ", cluster_assignment)

    # 保存簇中心到文件
    torch.save(centroids, 'checkpoints/my_kmeans_centroids_demo07.pt')

    # 用已有的簇中心结果对指定的数据做分类
    test()

def test():
    # 从文件加载簇中心
    centroids = torch.load('checkpoints/my_kmeans_centroids_demo07.pt') # shape: 5,10

    # 定义一个需要分类的测试数据
    test_data = torch.tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

    # 计算数据点与每个簇中心点之间的距离
    distances = np.linalg.norm(centroids - test_data, axis=1) # shape: 5
    # 找到张量中最小值所在的索引位置,在本例中就是找到测试数据点所属簇的索引位置(即分类的结果)
    cluster_assignment = np.argmin(distances)

    # 打印测试数据和对其分类的结果
    print(f"test_data:{test_data}, cluster_assignment:{cluster_assignment}")


if __name__ == '__main__':
    sample1()

源码 https://github.com/webabcd/PytorchDemo
作者 webabcd

标签:10,means,torch,KMeans,centroids,cluster,pytorch,data
From: https://www.cnblogs.com/webabcd/p/18429181/pytorch_basic_demo07

相关文章

  • 日新月异 PyTorch - numpy 基础: numpy 数组的添加和删除,以及常用函数
    源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-numpy基础:numpy数组的添加和删除,以及常用函数示例如下:numpy\demo5.pyimportnumpyasnp#数组的添加和删除defsample1():a=np.array([[1,2,3],[4,5,6]])print(a)'......
  • 日新月异 PyTorch - pytorch 基础: 张量的基础操作
    源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-pytorch基础:张量的基础操作示例如下:basic\demo01.py#本例用于演示torch张量的基础操作,其操作与numpy基本相同(注:看本例之前先要把numpy弄懂)#torch可以支持在gpu上运算,而numpy......
  • 日新月异 PyTorch - pytorch 基础: 自动求导
    源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-pytorch基础:自动求导示例如下:basic\demo02.pyimporttorchimportmath#自动求导的简单说明defsample1():#requires_grad用于表示是否需要自动求导k=torch.tensor(1.23......
  • 日新月异 PyTorch - pytorch 基础: 通过卷积神经网络(Convolutional Neural Networks,
    源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-pytorch基础:通过卷积神经网络(ConvolutionalNeuralNetworks,CNN)做图片分类-通过ResNet50做图片分类的学习(对cifar10数据集做训练和测试),保存训练后的模型,加载训练后的模型并评估指定的......
  • 史上最全 BAT 大厂AI大模型面试1000题整理!(速度收藏)
    前言刷题,是面试前的必备环节。想要入职大厂可谓是千军万马过独木桥。为了通过层层考验,刷题肯定是必不可少的。鉴于此大厂多年经验技术面试官总结根据BATAI大模型面试1000题系列,结合各个大厂的面试题型整理了一份《AI大模型面试刷题宝典》,为了阅读体验,面试题都按知识点整理好了,可谓......
  • 2024年中国生成式AI行业最佳应用实践|附100页PDF文件下载
    前言8月28日,由弗若斯特沙利文(Frost&Sullivan,简称“沙利文”)主办的第十八届中国增长、科创与领导力峰会暨第三届新投资大会上,沙利文携手头豹研究院共同发布了《2024年中国生成式AI行业最佳应用实践》报告,并揭晓了多项实践方案大奖。其中,商汤科技与海通证券凭借双方联合打造的金融......
  • 15.10 在k8s部署grafana-deployment并导入k8s大盘
    本节重点介绍:grafanadeployment部署k8s大盘导入准备yaml部署工作1.修改yaml中的节点选择器标签k8s-node01改为你自己的节点2.在节点上创建数据目录mkdir-pv/data/grafana3.部署grafana#部署kubectlapply-fdeployment.yaml#检查[root@prome-master01grafana]#ku......
  • DATA1002 / 1902 - Informatics: Data and Computation
    DATA1002/1902-Informatics:DataandComputation2024Sem2GroupProjectStage2THEPROJECTWORKFORSTAGE2:Task            Description           Group/individual            Details1 ......
  • 第10章1节:认识循证医学中的Meta分析,并予代码演示分析绘图
    Meta分析作为循证医学的重要组成部分,通过系统评价和定量合成多个研究结果,提供了科学可靠的证据支持。尽管Meta分析在实际应用中面临诸多挑战,但其在提高统计效能、识别异质性和偏倚方面的优势使得它在医学研究和临床决策中占据重要地位。随着技术的发展和数据处理能力的提升,Met......
  • 【超强总结】Python100个核心操作
    今天分享的Python核心操作,是围绕数据科学的周边展开,涉及到Numpy、Pandas、以及机器学习库,sklearn、pytorch、TensorFlow等等。1.导入库并设置默认参数介绍:导入Python数据科学常用库并设定一些默认参数,例如显示所有列、禁止科学计数法等。示例:importnumpyasnpi......