首页 > 其他分享 >【机器学习】K-Means

【机器学习】K-Means

时间:2023-07-31 15:55:46浏览次数:43  
标签:机器 closest idx Means centroids 学习 ndarray np ###

K-Means

找最接近的质心

公式

\[c^{(i)} := j \quad \mathrm{that \; minimizes} \quad ||x^{(i)} - \mu_j||^2 \]

其中,范式\(||X||\),其计算公式为

\[||X|| = \sqrt{x_1^2 + x_2^2 + \cdots + x_n^2} \]

代码

# UNQ_C1
# GRADED FUNCTION: find_closest_centroids

def find_closest_centroids(X, centroids):
    """
    Computes the centroid memberships for every example
    
    Args:
        X (ndarray): (m, n) Input values      
        centroids (ndarray): k centroids
    
    Returns:
        idx (array_like): (m,) closest centroids
    
    """

    # Set K
    K = centroids.shape[0]

    # You need to return the following variables correctly
    idx = np.zeros(X.shape[0], dtype=int)

    ### START CODE HERE ###
    for i in range(len(idx)):
        distance = []
        for j in range(K):
            norm_ij = np.linalg.norm(X[i] - centroids[j]) # 求范数(即距离)
            distance.append(norm_ij)

        idx[i] = np.argmin(distance)
    ### END CODE HERE ###
    
    return idx

计算质心平均值

公式

\[\mu_k = \frac{1}{|C_k|} \sum_{i \in C_k} x^{(i)} \]

代码

# UNQ_C2
# GRADED FUNCTION: compute_centpods

def compute_centroids(X, idx, K):
    """
    Returns the new centroids by computing the means of the 
    data points assigned to each centroid.
    
    Args:
        X (ndarray):   (m, n) Data points
        idx (ndarray): (m,) Array containing index of closest centroid for each 
                       example in X. Concretely, idx[i] contains the index of 
                       the centroid closest to example i
        K (int):       number of centroids
    
    Returns:
        centroids (ndarray): (K, n) New centroids computed
    """
    
    # Useful variables
    m, n = X.shape
    
    # You need to return the following variables correctly
    centroids = np.zeros((K, n))
    ### START CODE HERE ###
    for k in range(K):
        points = X[idx == k]
        centroids[k] = np.mean(points, axis=0)
    ### END CODE HERE ## 
    
    return centroids

标签:机器,closest,idx,Means,centroids,学习,ndarray,np,###
From: https://www.cnblogs.com/MrFeng2997/p/17592032.html

相关文章

  • 工业机器人的形态(非姿态)
    工业机器人的形态当我们描述机器人在空间的一个位姿时,通常使用直角坐标系、工具坐标系或用户坐标系(统称为笛卡尔坐标系)的点。但是同样的一个位姿对于关节坐标系来说可能有多个值。假定当六轴机器人处于零点位置时,各坐标系的值如下表。关节坐标系直角坐标系各轴均为0......
  • 爬虫学习(一)
    爬虫学习(一)简单爬虫我们需要学习urllib库,在这个库中存在着许多辅助我们进行爬虫的工具,该包中有着模块:request:最基本的HTTP请求模块,可以用来模拟发送请求。error:异常处理抹开,如果出现请求错误,可以捕捉异常,然后进行充实或其他操作。parse:工具模块,提供了许多URL处理方法,如拆分,......
  • python学习_元组
    一、什么是元组?元组也是python内置的数据结构,是一个不可变的序列,他也可以存放不同数据类型的元素不可变序列有:就是不可以改变的序列,没有增、删、改的操作,如元组、字符串就是不可变序列可变序列:可以对序列进行增、删、改操作,对象地址不发生改变,如列表、字典等'''不可变序列与......
  • 怎么学习C语言,才能快速掌握?
    有多年软件行业经验,期间参与过多个C语言项目。要掌握一门编程语言,仅仅投入时间学习是不够的,关键在于实际项目经验。在没有真正实战经验之前,不宜轻易声称掌握某种编程语言,因为编程是积累性的工作,理论知识重要但实践更为关键。学习任何编程语言都需要先掌握理论基础,然后通过项目实战......
  • Java学习
    数据类型整数类型:byte1个字节,short2个字节,int3个字节,long8个字节。浮点类型:float4个字节,double8个字节,字符类型:char2个字节银行业务不能用浮点数进行比较,用BigDecimal(数学工具类)所有的字符本质上还是数字。转义字符:\t制表符空格\n换行类型转换:由低到高b......
  • 站桩学习整理
    姿势调整由下至上双脚分开,略宽于肩膀,脚尖向前膝盖微曲(方便大腿内侧发力,也能防止盆骨前倾)大腿内侧肌肉收缩(不用太大的力,但是需要收缩)注意盆骨千万不要前倾,胯微下坐,因为膝盖微曲,自然会微微下坐,且大腿内侧用了,会支撑住保持脊柱挺直,在放松的前提下挺到最直,要是用力挺容易累双手......
  • 【机器学习】多变量线性回归
    LinerRegressionwithMultipleVariable用向量实现的代码,单变量和多变量可以共用多变量线性回归相当于是单变量的扩展,主要还是按照模型假设、构造代价函数和研究代价函数的最小值这样的思路展开。与单变量线性回归不同的是,多变量线性回归还可能涉及到特征缩放的问题,主要原因......
  • 【TCP】学习笔记:application/octet-stream
    当浏览器在请求资源时,会通过http返回头中的content-type决定如何显示/处理将要加载的数据,如果这个类型浏览器能够支持阅览,浏览器就会直接展示该资源,比如png、jpeg、video等格式。在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type:application/octet-st......
  • 工业机器人坐标系详解(基于六轴串联机器人和SCARA机器人)
    工业机器人的坐标系机器人的坐标系是重中之重,它是理解机器人运动的基础。机器人所有运动的点位都是建立在坐标系的基础之上,所以如果坐标系不理解,那么就很难真实了解机器人是如何运动的。什么是坐标系?我们需要移动机器人来工作,但是如何让机器人移动?当然我们可以单独控制机器人的......
  • Vue的学习笔记
    一、弹窗的初始化1.弹窗打开的时候想要对弹窗进行一些初始化数据(比如从表默认选中第一行),可以用@opened绑定方法进行操作,详见:https://element.eleme.cn/#/zh-CN/component/dialog  二、显示与不显示:v-show视频学习地址(03-key,v-show,computed|【入门篇】从零开始学习Vue3核......