k均值算法——python实现

无监督学习中应用最多的就是聚类,其中k均值算法就是典型的聚类算法,下面是一段从文本中读取30数据,然后进行聚类的过程,包括输出读取的数据集、随机选择的K个初始均值向量、30行数据各自所属的类别以及最后的聚类中心,因为每次是随机选择K个初始均值向量,所以每次运行结果不一样的。

如果各位需要全部引用的话,请标注来源,具体的数据集需要的话,可以找我要。
import numpy as np
import math
# 读取文件
def load_dataset(file_name):
    data_list = []
    fr=open(file_name,encoding='utf-8-sig')
    lines = fr.readlines()
    for line in lines:
        pas_line = line.strip().split("\t")
        flt_line = list(map(eval, pas_line))
        data_list.append(flt_line)
    return np.array(data_list)
# 路径输入及函数调用后打印
data_set = load_dataset(r"F:\test\1.txt")
print(data_set)
# 计算两个向量之间的欧氏距离
def dist_eclud(vecA, vecB):
    vec_square = []
    for element in vecA - vecB:
        element = element ** 2
        vec_square.append(element)
    return sum(vec_square) ** 0.5

# 构建k个随机质心
def rand_cent(data_set, k):
  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,针对您的问题,我来为您解答。 首先,初始化一个4维向量可以使用Python的列表(list)来实现。例如,以下代码演示了如何创建一个包含4个0的向量: ``` vector = [0, 0, 0, 0] ``` 接下来,让我们来看一下如何使用K均值聚类算法实现对数据的聚类。K均值聚类是一种常用的无监督学习算法,它通过将数据分成K个不同的簇来实现聚类。 以下是使用Python实现K均值聚类的示例代码: ```python import numpy as np # 定义K均值聚类算法 def kmeans(X, k, max_iters=100): # 随机初始化质心 centroids = X[np.random.choice(range(len(X)), k)] for i in range(max_iters): # 计算每个样本到质心的距离 distances = np.sqrt(((X - centroids[:, np.newaxis]) ** 2).sum(axis=2)) # 找到距离每个样本最近的质心 closest_centroids = np.argmin(distances, axis=0) # 重新计算质心 for j in range(k): centroids[j] = X[closest_centroids == j].mean(axis=0) return centroids, closest_centroids # 测试K均值聚类算法 X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) k = 2 centroids, closest_centroids = kmeans(X, k) print("质心:", centroids) print("每个样本所属的簇:", closest_centroids) ``` 在上述代码中,我们使用了NumPy库来进行数据处理和计算。首先,我们随机初始化了K个质心,然后循环执行以下步骤: 1. 计算每个样本到质心的距离。 2. 找到距离每个样本最近的质心。 3. 重新计算质心。 重复上述步骤,直到算法收敛或达到最大迭代次数。 最后,我们输出了计算出的质心和每个样本所属的簇。 希望上述代码能帮到您,如有疑问请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值