文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python聚类算法指的是什么

2023-06-20 18:10

关注

这篇文章主要介绍了python聚类算法指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

说明

聚类常用于数据探索或挖掘前期,在没有先验经验的背景下进行探索性分析,也适用于样本量大的数据预处理。

常用的聚类算法分为基于划分、层次、密度、网格、统计、模型等类型的算法。典型算法包括K均值(经典聚类算法)、DBSCAN、两步聚类、BIRCH、谱聚类等。

聚类分析可以解决的问题包括:数据集可以分为几类,每个类别有多少样本,不同类别中每个变量的强弱关系,不同类别的典型特征是什么。

聚类算法之K均值实例

import numpy as npimport matplotlib.pyplot as plt # 两点距离def distance(e1, e2):    return np.sqrt((e1[0]-e2[0])**2+(e1[1]-e2[1])**2) # 集合中心def means(arr):    return np.array([np.mean([e[0] for e in arr]), np.mean([e[1] for e in arr])]) # arr中距离a最远的元素,用于初始化聚类中心def farthest(k_arr, arr):    f = [0, 0]    max_d = 0    for e in arr:        d = 0        for i in range(k_arr.__len__()):            d = d + np.sqrt(distance(k_arr[i], e))        if d > max_d:            max_d = d            f = e    return f # arr中距离a最近的元素,用于聚类def closest(a, arr):    c = arr[1]    min_d = distance(a, arr[1])    arr = arr[1:]    for e in arr:        d = distance(a, e)        if d < min_d:            min_d = d            c = e    return c  if __name__=="__main__":    ## 生成二维随机坐标,手上有数据集的朋友注意,理解arr改起来就很容易了    ## arr是一个数组,每个元素都是一个二元组,代表着一个坐标    ## arr形如:[ (x1, y1), (x2, y2), (x3, y3) ... ]    arr = np.random.randint(100, size=(100, 1, 2))[:, 0, :]     ## 初始化聚类中心和聚类容器    m = 5    r = np.random.randint(arr.__len__() - 1)    k_arr = np.array([arr[r]])    cla_arr = [[]]    for i in range(m-1):        k = farthest(k_arr, arr)        k_arr = np.concatenate([k_arr, np.array([k])])        cla_arr.append([])     ## 迭代聚类    n = 20    cla_temp = cla_arr    for i in range(n):    # 迭代n次        for e in arr:    # 把集合里每一个元素聚到最近的类            ki = 0        # 假定距离第一个中心最近            min_d = distance(e, k_arr[ki])            for j in range(1, k_arr.__len__()):                if distance(e, k_arr[j]) < min_d:    # 找到更近的聚类中心                    min_d = distance(e, k_arr[j])                    ki = j            cla_temp[ki].append(e)        # 迭代更新聚类中心        for k in range(k_arr.__len__()):            if n - 1 == i:                break            k_arr[k] = means(cla_temp[k])            cla_temp[k] = []     ## 可视化展示    col = ['HotPink', 'Aqua', 'Chartreuse', 'yellow', 'LightSalmon']    for i in range(m):        plt.scatter(k_arr[i][0], k_arr[i][1], linewidth=10, color=col[i])        plt.scatter([e[0] for e in cla_temp[i]], [e[1] for e in cla_temp[i]], color=col[i])    plt.show()

感谢你能够认真阅读完这篇文章,希望小编分享的“python聚类算法指的是什么”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯