机器学习-K-Means算法编程作业

本文详细介绍了K-Means聚类算法的实现步骤,包括初始化聚类中心、簇分配、更新聚类中心等关键过程,并提供了一个完整的Python代码实现。此外,还展示了如何使用sklearn库来执行K-Means算法,获取聚类中心和样本归属。内容涵盖了数据预处理、距离计算和迭代优化,是理解K-Means算法的良好参考资料。
摘要由CSDN通过智能技术生成

一、初始化聚类中心

随机选择k个聚类中心:

def init_centroids(X, k):
    m, n = X.shape
    centroids = np.zeros((k, n))
    idx = np.random.randint(0, m, k)
    
    for i in range(k):
        centroids[i,:] = X[idx[i],:]
    
    return centroids

二、簇分配

为每个样本找到离它最近的簇中心:

def find_closest_centroids(X, centroids):
    m = X.shape[0]
    k = centroids.shape[0]
    idx = np.zeros(m)
    
    for i in range(m):
        min_dist = 1000000
        for j in range(k):
            dist = np.sum((X[i,:] - centroids[j,:]) ** 2)
            if dist < min_dist:
                min_dist = dist
                idx[i] = j
    
    return idx

三、更新各个聚簇中心坐标

计算簇的聚类中心。 聚类中心是当前分配给簇的所有样本的平均值。

def compute_centroids(X, idx, k):
    m, n = X.shape
    centroids = np.zeros((k, n))
    
    for i in range(k):
        indices = np.where(idx == i)
        centroids[i,:] = (np.sum(X[indices,:], axis=1) / len(indices[0])).ravel()
    
    return centroids

四、K-Means算法

def run_k_means(X, initial_centroids, max_iters):
    m, n = X.shape
    k = initial_centroids.shape[0]
    idx = np.zeros(m)
    centroids = initial_centroids
    
    for i in range(max_iters):
        idx = find_closest_centroids(X, centroids)
        centroids = compute_centroids(X, idx, k)
    
    return idx, centroids

五、使用sklearn库进行K-means算法

https://blog.csdn.net/sinat_26917383/article/details/70240628

from sklearn.cluster import KMeans

model = KMeans(n_clusters=16,n_init=100,n_jobs=-1)  #n_init设置获取初始簇中心的更迭次数,防止局部最优 n_jobs设置并行(使用CPU数,-1则使用所有CPU)
model.fit(X)    #开始聚类

centroids = model.cluster_centers_  #获取聚簇中心
C = model.predict(X) #获取每个数据点的对应聚簇中心的索引
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值