永发信息网

kmeans算法用Python怎么实现

答案:1  悬赏:60  手机版
解决时间 2021-04-05 12:20
kmeans算法用Python怎么实现
最佳答案
第一种: 引用scikit-learn包
from sklearn.cluster import KMeans
 
k = 10  # Kmeans的k值
model = Kmeans(n_clusters=k)
X = [[1, 2], [1, 3], [2, 1], ....]  # 改成你的数据
model.fit(X)
# 然后就训练好了, 可以查看model的属性
model.cluster_centers
model.labels_第二种: 自己写代码实现
import numpy as np
import random
data = [[1, 1, 1], [1, 1, 3], [1, 2, 1], [5, 1, 1], [5, 1, 2], [5, 2, 1], [5, 5, 5], [5, 5, 4], [5, 4, 4]]
data = np.array(data)
 
k = 4  # kmeans的k
n_iteration = 500  # 最大迭代次数
 
 
# 求初始化的k个质心(这k个质心必须包含在k个点的凸空间内)
center = np.matrix(np.zeros((k, len(data[0]))))
center_after = np.matrix(np.zeros((k, len(data[0]))))
for i in range(len(data[0])):
    center[:, i] = min(data[:, i]) + (max(data[:, i]) - min(data[:, i])) * np.random.rand(k, 1)
 
 
def calc_distance(x, y, distance='eucidean'):
    x, y = np.array(x), np.array(y)
    if distance == 'eucidean':
        return np.sqrt(np.sum((y - x)**2))
 
 
n = 0
while 1:
    n += 1
    print('第%s次迭代' % n)
    # 计算所有点到每个质心的距离, 将每个点分到距离最近的那个点那一类
    # 9个点里哪个质心最近, 就分到第几个类
    label = np.argmin(np.array([calc_distance(x, y) for x in data for y in center]).reshape(len(data), k), axis=1)
    print(label)
    # 重新计算质心
    for i in range(k):
        center_after[i] = np.mean(np.array([data[j] for j in range(len(data)) if label[j] == i]), axis=0)
    if np.sum(np.abs(center_after - center)) < 0.01:
        # print(np.sum(np.abs(center_after - center)))
        print('相邻两次迭代改变甚小, 迭代结束')
        break
    if n > n_iteration:
        print('迭代次数已达上限, 迭代结束')
        break
    center = center_after
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
龙之信条 黑暗崛起怎么喂独眼巨人
东北大仙和周易哪个更可信
儿童励志名人名言,有没有中英对照的名人名言
名著阅读与积累。(4分)《朝花夕拾》是(人
我想购买大众高尔夫嘉旅,但纠结是购买1.4T+7
fanuc9000参数如何打开豆丁网
对婶婶也有过性幻想,婶婶在暗示我么
水浒传里面对联文竹对
重庆南方艺考的专业有哪些?最好的专业是什么
我的淘宝店铺为什么没有主营宝贝
如图,梯形ABCD中,AD∥BC,将AD叠合到BC上,
二本工科学生,学的食品科学与工程,是跨专业
阿兰的歌全是 菊池一仁创作的???
超级异能少年 一共有多少章?
交通标志杆的安装有哪些方式
推荐资讯
呼吸机面罩吸氧与单纯性面罩吸氧有什么区别
单选题2010年10月26日,中国疾病预防控制通报
单选题在下列常见化学肥料中,你认为属于复合
矣圾的著名人物有什么?
下列现象不是由惯性引起的是A.撞击斧柄斧头套
HTC D820怎么截屏?
十大成功经典名言有哪些?
怎样和沉府很深的人打交道,明明心里对你恨得
单选题对印度非暴力不合作运动的确切理解是A.
有没有日语精读(外研社) MP3下载
安卓版2k17玩了生涯模式后在快速游戏中不能切
练习太极扇有何好处
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?