首页 > 其他分享 >【头歌】机器学习——AGNES

【头歌】机器学习——AGNES

时间:2024-11-02 23:45:01浏览次数:5  
标签:dist return np 头歌 cluster2 机器 cluster1 data AGNES

第1关:距离的计算 

import numpy as np
def calc_min_dist(cluster1, cluster2):
    '''
    计算簇间最小距离
    :param cluster1:簇1中的样本数据,类型为ndarray
    :param cluster2:簇2中的样本数据,类型为ndarray
    :return:簇1与簇2之间的最小距离
    '''
    #********* Begin *********#
    min_dist = np.inf
    for i in range(len(cluster1)):
        for j in range(len(cluster2)):
            dist = np.sqrt(np.sum(np.square(cluster1[i] - cluster2[j])))
            if dist < min_dist:
                min_dist = dist
    return min_dist
    #********* End *********#
def calc_max_dist(cluster1, cluster2):
    '''
    计算簇间最大距离
    :param cluster1:簇1中的样本数据,类型为ndarray
    :param cluster2:簇2中的样本数据,类型为ndarray
    :return:簇1与簇2之间的最大距离
    '''
    #********* Begin *********#
    max_dist = 0
    for i in range(len(cluster1)):
        for j in range(len(cluster2)):
            dist = np.sqrt(np.sum(np.square(cluster1[i] - cluster2[j])))
            if dist > max_dist:
                max_dist = dist
    return max_dist
 
 
 
def calc_avg_dist(cluster1, cluster2):
    '''
    计算簇间平均距离
    :param cluster1:簇1中的样本数据,类型为ndarray
    :param cluster2:簇2中的样本数据,类型为ndarray
    :return:簇1与簇2之间的平均距离
    '''
 
    #********* Begin *********#
    num = len(cluster1) * len(cluster2)
    avg_dist = 0
    for i in range(len(cluster1)):
        for j in range(len(cluster2)):
            dist = np.sqrt(np.sum(np.square(cluster1[i] - cluster2[j])))
            avg_dist += dist
    avg_dist = avg_dist / num
 
    return avg_dist
    #********* End *********#

第2关:AGNES算法流程



import numpy as np
def AGNES(feature, k):
    '''
    AGNES聚类并返回聚类结果
    假设数据集为`[1, 2], [10, 11], [1, 3]],那么聚类结果可能为`[[1, 2], [1, 3]], [[10, 11]]]
    :param feature:训练数据集所有特征组成的ndarray
    :param k:表示想要将数据聚成`k`类,类型为`int`
    :return:聚类结果
    '''
    #********* Begin *********#
    # 找到距离最小的下标
    def find_Min(M):
        min = np.inf
        x = 0;
        y = 0
        for i in range(len(M)):
            for j in range(len(M[i])):
                if i != j and M[i][j] < min:
                    min = M[i][j];
                    x = i;
                    y = j
        return (x, y, min)
    #计算簇间最大距离
    def calc_max_dist(cluster1, cluster2):
        max_dist = 0
        for i in range(len(cluster1)):
            for j in range(len(cluster2)):
                dist = np.sqrt(np.sum(np.square(cluster1[i] - cluster2[j])))
                if dist > max_dist:
                    max_dist = dist
        return max_dist
    #初始化C和M
    C = []
    M = []
    for i in feature:
        Ci = []
        Ci.append(i)
        C.append(Ci)
    for i in C:
        Mi = []
        for j in C:
            Mi.append(calc_max_dist(i, j))
        M.append(Mi)
    q = len(feature)
    #合并更新
    while q > k:
        x, y, min = find_Min(M)
        C[x].extend(C[y])
        C.pop(y)
        M = []
        for i in C:
            Mi = []
            for j in C:
                Mi.append(calc_max_dist(i, j))
            M.append(Mi)
        q -= 1
    return C
    #********* End *********#

第3关:红酒聚类


from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import StandardScaler

def Agglomerative_cluster(data):
    '''
    对红酒数据进行聚类
    :param data: 数据集,类型为ndarray
    :return: 聚类结果,类型为ndarray
    '''
    
    # 数据预处理:标准化处理,使得每个特征的均值为0,标准差为1
    scaler = StandardScaler()
    data_scaled = scaler.fit_transform(data)
    
    # 创建AgglomerativeClustering实例,设置聚类数为3,使用ward方法来计算簇间距离
    agnes = AgglomerativeClustering(n_clusters=3, linkage='ward')
    
    # 训练模型并获取聚类结果
    result = agnes.fit_predict(data_scaled)
    
    return result

# 示例调用
# 假设有一个名为wine_data的ndarray,包含了红酒数据集
# result = Agglomerative_cluster(wine_data)
# print(result)
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import StandardScaler

def Agglomerative_cluster(data):
    '''
    对红酒数据进行聚类
    :param data: 数据集,类型为ndarray
    :return: 聚类结果,类型为ndarray
    '''
    
    # 数据预处理:标准化处理,使得每个特征的均值为0,标准差为1
    scaler = StandardScaler()
    data_scaled = scaler.fit_transform(data)
    
    # 创建AgglomerativeClustering实例,设置聚类数为3,使用ward方法来计算簇间距离
    agnes = AgglomerativeClustering(n_clusters=3, linkage='ward')
    
    # 训练模型并获取聚类结果
    result = agnes.fit_predict(data_scaled)
    
    return result

# 示例调用
# 假设有一个名为wine_data的ndarray,包含了红酒数据集
# result = Agglomerative_cluster(wine_data)
# print(result)

标签:dist,return,np,头歌,cluster2,机器,cluster1,data,AGNES
From: https://blog.csdn.net/maodao666/article/details/143453695

相关文章

  • 机器学习入门基础----白板推导笔记输出
    为了能够建立知识学习后输出体系,开设这个系列,旨在通过记录博客输出学习到的机器学习内容,笔者所学为B站upshuhuai008白板推导系列,记录可能比不上原创,也可能有没理解不严谨的地方,请善意指正。感兴趣的可以去看UP白板-------------------------------------------------------------......
  • 使用机器学习预测FPGA的执行时间与功耗:一种创新的方法
    随着科技的飞速发展,现场可编程门阵列(FPGA)在高性能计算、数据中心、人工智能等领域的应用日益广泛。然而,FPGA设计的复杂性和功耗问题一直是制约其性能提升的关键因素。近年来,机器学习(ML)技术的兴起为FPGA的执行时间与功耗预测提供了新的解决方案。本文将探讨如何使用机器学习进行FPG......
  • 机器学习与数学公式
    目录在机器学习中,将公式应用到算法程序上主要涉及以下几个步骤:1、数学公式转换成编程逻辑: 2、选择合适的编程语言和工具: 3、使用矩阵运算和优化方法:4、实现算法逻辑:5、将公式封装成函数:结论示例1、线性回归2、均方误差(MeanSquaredError,MSE)3、梯度下降算......
  • 基于django的在线购物商城推荐系统 python个性化购物商城推荐系统的设计与开发 爬虫
    基于django的在线购物商城推荐系统python个性化购物商城推荐系统的设计与开发爬虫排行榜可视化数据基于流行度的热点推荐平均加权混合推荐协同过滤推荐大数据机器学习深度学习OnlineShopRecommendPy一、项目简介1、开发工具和使用技术Pycharm、Python3及以上版......
  • 基于深度学习的机器人智能控制算法 笔记
    正解/逆解求正解/逆解有现成的库,参考https://github.com/petercorke/robotics-toolbox-python,代码如下:importroboticstoolboxasrtbimportnumpyasnpnp.set_printoptions(precision=6,suppress=True)robot=rtb.models.Panda()qr=np.array([0,-0.3,0,-2.2......
  • NoSQL数据库实习头歌实验知识点整理(二)-MongoDB部分
    文章目录1-1初识MongoDB1.1DOS(Windows)端启动MongoDB服务1.1.1配置环境变量1.1.2启动服务并进行相关配置1.2Linux端启动MongoDB服务1.2.1数据存放位置1.2.2日志文件1.2.3配置文件1.3启动客户端1.4退出客户端1.5关闭MongoDB服务1.5.1能连接到客户端时1......
  • 在机器学习中,L2正则化为什么能够缓过拟合
    在机器学习中,L2正则化作为一种有效的技巧,能够显著缓解模型的过拟合现象。主要原因包括:1.对权重进行约束,减少模型复杂性;2.增强模型的泛化能力;3.防止权重过大导致的数值不稳定;4.与损失函数相结合,实现模型目标的平衡;5.鼓励权重的均匀分布。通过L2正则化,我们可以得到更稳定、更健壮的......
  • 机器视觉的相机标定到底是什么
    机器视觉中的相机标定是一种确定相机参数的过程,使得软件能更准确地解释相机捕获的图像。这些参数包括内部参数(如焦距、图像中心、像素尺度)和外部参数(相机在空间中的位置和角度)。标定过程对于机器视觉系统的精度至关重要,因为这些参数决定了如何从2D图像重构出3D的真实世界。机......
  • 越疆机器人与上位机的通讯
        越疆机器人的开发终于整完了。整体来说这个算比较简单,但是由于本身越疆是通过他们自己的上位机进行控制与通讯,并不是单纯用lua解释器去运行,因此效率属实不算高。最近也是在搞UR的开发,这个真的是一言难尽,明天加班的时候再吐槽。    首先确认一点,越疆机器人......
  • 【机器人学导论】简明学习笔记2.1——空间描述和变换(1/2)
    主要参考学习资料:《机器人学导论(第4版)》JohnJ.Craig著台大机器人学之运动学——林沛群(本文插图来自该课程课件)本章前置知识:矢量和矩阵的四则运算-单位矩阵-转置矩阵-逆矩阵-正交矩阵码字不易,求点赞收藏(´•ω•̥`)有问题欢迎评论区讨论~目录空间描述和变换描......