文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

K-means算法怎么在Python中应用

2023-06-14 15:41

关注

这篇文章将为大家详细讲解有关K-means算法怎么在Python中应用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

python是什么意思

Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

1、调用以下库

import numpy as np   #用于抽样和生成随机数from sklearn.cluster import KMeans   #sklearn自带的Kmeans算法, 用于严重本文算法结果是否正确import matplotlib.pyplot as plt     #结果可视化import sys   #需要用到sys.exit()函数

若不需要验证聚类结果是否可以不使用Sklearn库。

2、生成用于训练的随机数据

np.set_printoptions(suppress=True)    #令numpy的结果不以科学计数法的方式输出Data = np.array([[1.0, 2.0], [1.5, 1.8], [3, 4], [6, 8], [8, 8], [1, 0.6],                 [9, 11], [7, 10]])  #你也可以通过抽样的方式来更快的获得测试数据

3、定义用于选择随机初始点和簇数(k)的函数

def K_means(data, k):    global Mean    mean = []    a = np.max(data[:, 0])    b = np.min(data[:, 0])    c = np.max(data[:, 1])    d = np.min(data[:, 1])    for i in range(k):        x = np.random.uniform(a, b, 1)          #此处返回array        y = np.random.uniform(c, d, 1)  #此处返回array        mean.append([float(x), float(y)])    Mean = np.array(mean)    return Mean

在上面的代码中,为了限定初始点(x,y)的位置不会超出样本点的范围,因此均匀抽样的上下限是指训练数据(a,b)和(c,d)的最小横距。

4、定义可视化函数, 绘制测试数据散点图

def vision(data, cell):    plt.figure(figsize=(12,6))    ax1 = plt.subplot(121)    ax1.scatter(Data[:, 0], Data[:, 1])   #原始数据散点图    ax1.scatter(point[:, 0], point[:, 0])    #同时将随机选取的初始点表示出来    plt.xlabel("x")    plt.ylabel("y")    plt.title("scatter of " + "rural" + " data")    ax2 = plt.subplot(122)    ax2.scatter(Data[:, 0], Data[:, 1])    #原始数据散点图    ax2.scatter(data[:, 0], data[:, 1])     #经过迭代后最终确定的聚类点    plt.xlabel("x")    plt.ylabel("y")    plt.title("scatter of " + cell + " data")    plt.show()

聚类结果的可视化对于判断聚类结果的准确性至关重要。

5、定义迭代过程, 通过不断计算各个样本对聚类点的欧式聚类, 来不断更新聚类点

def iteration(Data, point):    A = []    B = []    for i in range(len(Data)):        d1 = np.sqrt(sum(pow(Data[i] - point[0], 2)))        d2 = np.sqrt(sum(pow(Data[i] - point[1], 2)))        if d1 > d2:            A.append(list(Data[i]))        else:            B.append(list(Data[i]))    if len(A) == len(Data) or len(B) == len(Data):        print("初始化错误")        sys.exit(0)    new_x1 = np.mean(np.array(A)[:, 0])    new_y1 = np.mean(np.array(A)[:, 1])     new_x2 = np.mean(np.array(B)[:, 0])    new_y2 = np.mean(np.array(B)[:, 1])    new_point = np.array([[new_x1, new_y1], [new_x2, new_y2]])    return new_point

注意, 上段代码中加入了一个if语句

    if len(A) == len(Data) or len(B) == len(Data):        print("初始化错误")        sys.exit(0)

关于K-means算法怎么在Python中应用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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