使用Python实现K-means 算法-------文章中有源码

简介: 使用Python实现K-means 算法-------文章中有源码

一、实验目的

使用Python实现K-means 算法。

二、实验原理

(1)(随机)选择K个聚类的初始中心;

(2)对任意一个样本点,求其到K个聚类中心的距离,将样本点归类到距离最小的中心的聚类,如此迭代n次;

(3)每次迭代过程中,利用均值等方法更新各个聚类的中心点(质心);

(4)对K个聚类中心,利用2,3步迭代更新后,如果位置点变化很小(可以设置阈值),则认为达到稳定状态,迭代结束。

三、Python包

(1)numpy

四、实验内容

数据集如下:

[3.13257748 4.08653576]

[2.8486827 4.48815431]

[3.40882487 4.14138275]

[3.06977634 4.31563331]

[3.14381702 4.10147438]

[2.67195731 3.6464033 ]

[2.53242806 4.40165829]

[3.43557873 3.70279658]

[2.62401582 3.54597948]

[3.10216656 4.19867393]

[3.77207532 2.58221923]

[3.92348801 2.72714337]

[4.2845745 3.42431606]

[3.80646856 2.73666636]

[3.9872807 3.13824138]

[4.09143306 3.39424484]

[4.31901806 3.08375654]

[3.58912334 2.91815208]

[4.09898341 3.00657741]

[4.2702863 3.20399911]

试采用K-means 算法对其进行聚类(k为2)。

代码:


import numpy as np
import matplotlib.pyplot as plt
data=[[3.13257748,4.08653576],[2.8486827,4.48815431],
[3.40882487,4.14138275],[3.06977634,4.31563331],
[3.14381702,4.10147438],[2.67195731,3.6464033 ],
     [2.53242806,4.40165829],[3.43557873,3.70279658],
     [2.62401582,3.54597948], [3.10216656,4.19867393],
[3.77207532,2.58221923],[3.92348801,2.72714337],
    [4.2845745,3.42431606],[3.80646856,2.73666636],
[3.9872807,3.13824138],[4.09143306,3.39424484],
    [4.31901806,3.08375654],[3.58912334,2.91815208],
    [4.09898341,3.00657741],[4.2702863,3.20399911]]
Data=np.array(data)
plt.scatter(Data[:,0], Data[:,1],color = 'green', s = 200)
plt.show()
new_x1=[3.5,3.5]
new_x2=[4,2.5]
for i in range(100):
    temp1=[]
    temp2=[]
    for i in range(len(Data)):
        dis_1=sum((Data[i]-new_x1)**2)
        dis_2=sum((Data[i]-new_x2)**2)
        if dis_1>dis_2:
            temp1.append(Data[i])
        else:
            temp2.append(Data[i])
    temp1=np.array(temp1)
    temp2=np.array(temp2)
    new_x1=[]
    new_x1.append(np.average(temp1[:,0]))
    new_x1.append(np.average(temp1[:,1]))
    new_x2 = []
    new_x2.append(np.average(temp2[:, 0]))
    new_x2.append(np.average(temp2[:, 1]))
plt.scatter(temp1[:,0], temp1[:,1],color = 'green', s = 200)
plt.scatter(temp2[:,0], temp2[:,1],color = 'red', s = 200)
plt.show()

image.pngimage.png


目录
相关文章
|
4月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
5月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
279 26
|
5月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
732 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
5月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
508 4
|
5月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
5月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
305 0
|
5月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
432 0
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
460 3
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【7月更文挑战第22天】在大数据领域,Python算法效率至关重要。本文深入解析时间与空间复杂度,用大O表示法衡量执行时间和存储需求。通过冒泡排序(O(n^2)时间,O(1)空间)与快速排序(平均O(n log n)时间,O(log n)空间)实例,展示Python代码实现与复杂度分析。策略包括算法适配、分治法应用及空间换取时间优化。掌握这些,可提升大数据处理能力,持续学习实践是关键。
364 1
|
存储 机器学习/深度学习 算法
Python算法基础教程
Python算法基础教程
140 0

热门文章

最新文章

推荐镜像

更多