K-mean算法Python实现以及总结

简介: K-mean算法Python实现以及总结

一、算法原理


K-mean算法属于无监视算法,就是我们不标定,让计算机自己将数据进行分类,具体算法流程我结合代码来讲解


K-mean算法

1、列数据

2、通过计算后将数据进行比较分类

3、各个类别进行计算得出各个相应的中心点

4、判断中心点是否相同,若得出不同值则继续算

5、画图


import matplotlib.pyplot as plt
import numpy as np
#1、先列出一列数组
y=np.array([[2,3],[2,2],[3,4],[1,2],[9,8],[8,8],[8,7],[9,9],[1,5],[2,4],[7.9,7],[8.9,9],[2,1],[7,9],[9,7],[8,8],[9,7],[8,8.5]])
#2,方便画图
x_scatter=[data[0] for data in y]
y_scatter=[data[1] for data in y]
#3,分类 0类,1类
k=[0,1]
#3,先给出两个点
y_center=np.array([[7,7],[9,9]],dtype=np.float64)
y_center_new=np.copy(y_center)
#4,用于判断是否退出
flag = True
#5,用于后者分类
y_res=np.zeros(len(y))
#6,用于判断是否退出
tmp=0
while flag and tmp<10:
    tmp+=1
    for i in range(len(y)):                 # y里面的点数
        item=y[i]                           # 二维数组里面的一维数组
        d0=(item[0]-y_center[0][0])**2+(item[1]-y_center[0][1])**2
        print("d0 is ",d0)
        d1=(item[0]-y_center[1][0])**2+(item[1]-y_center[1][1])**2
        print("d1 is ",d1)
        y_res[i]=0 if d0>d1 else 1          # 测距分类
    y_res_like_0=[[i,i] for i in y_res]     # 二维列表,里面非0即1
    temp_center=y*y_res_like_0              # 乘0得0,乘1得1            ####关键,到后面中心点不会动的原因是,y中分类已经分的固定了,每次计算用都是固定的几个数
    y_center_new[0]=np.sum(temp_center,axis=0)/np.sum(y_res)   # x坐标求和,y坐标求和,以及得到的y_res(1的求和)
    y_res_like_1=[[1-i,1-i] for i in y_res]       # 二维列表,里面非0即1
    temp_center=y*y_res_like_1              # 乘0得0,乘1得1            ####关键,到后面中心点不会动的原因是,y中分类已经分的固定了,每次计算用都是固定的几个数
    y_center_new[1]=np.sum(temp_center,axis=0)/(len(y_res)-np.sum(y_res)) #y_res的总数减去1的总数等于0的总数
    if(y_center !=y_center_new).any():    # 判断前后两次中心点是否相同
        y_center = y_center_new
    else:
        flag = False                     # 相同直接退出
#7画图
    plt.scatter(x_scatter,y_scatter,c='blue',marker='.')
    plt.scatter([y_center[0][0],y_center[1][0]],[y_center[0][1],y_center[1][1]],c="red",s=100,marker='*')
    plt.title("K-means")
    plt.show()


三、测试结果


计算机自己第一次分类的结果


bd5d56ab5ecc45a0900449a4d1970f0c.png

计算机自己第二次分类的结果

9bf08f4c2b6846c6b18420d720849823.png

计算机自己第二次分类的结果

d7b6690497fb4a4b88d96bbf5990250c.png

可知分类的两个中心点已经确定




相关文章
|
12天前
|
数据采集 机器学习/深度学习 数据可视化
【优秀python web系统毕设】基于python的全国招聘数据分析可视化系统,包括随机森林算法
本文介绍了一个基于Python的全国招聘数据分析可视化系统,该系统利用数据挖掘技术、随机森林算法和数据可视化技术,从招聘网站抓取数据,进行处理、分析和预测,帮助用户洞察招聘市场,为求职者和企业提供决策支持。
|
12天前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
12天前
|
机器学习/深度学习 数据采集 算法
【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现
本文介绍了一个基于Python的时间序列模型,用于分析和预测2021-2022年重庆地区的气温变化趋势,通过ARIMA和LSTM模型的应用,揭示了气温的季节性和趋势性变化,并提供了对未来气温变化的预测,有助于气象预报和相关决策制定。
【优秀python算法毕设】基于python时间序列模型分析气温变化趋势的设计与实现
|
6天前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
7天前
|
JSON 算法 API
京东以图搜图功能API接口调用算法源码python
京东图搜接口是一款强大工具,通过上传图片即可搜索京东平台上的商品。适合电商平台、比价应用及需商品识别服务的场景。使用前需了解接口功能并注册开发者账号获取Key和Secret;准备好图片的Base64编码和AppKey;生成安全签名后,利用HTTP客户端发送POST请求至接口URL;最后解析JSON响应数据以获取商品信息。
|
6天前
|
算法 Python
python多继承的3C算法是什么?怎么用?
有很多地方都说python多继承的继承顺序,是按照深度遍历的方式,其实python多继承顺序的算法,不是严格意义上的深度遍历,而是基于深度遍历基础上优化出一种叫3C算法
|
8天前
|
JavaScript 算法 前端开发
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
49 1
|
8天前
|
数据采集 机器学习/深度学习 算法
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
【python】python客户信息审计风险决策树算法分类预测(源码+数据集+论文)【独一无二】
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
【优秀python系统毕设】基于Python flask的气象数据可视化系统设计与实现,有LSTM算法预测气温
本文介绍了一个基于Python Flask框架开发的气象数据可视化系统,该系统集成了数据获取、处理、存储、LSTM算法气温预测以及多种数据可视化功能,旨在提高气象数据的利用价值并推动气象领域的发展。
|
12天前
|
数据可视化 算法 前端开发
基于python flask+pyecharts实现的中药数据可视化大屏,实现基于Apriori算法的药品功效关系的关联规则
本文介绍了一个基于Python Flask和Pyecharts实现的中药数据可视化大屏,该系统应用Apriori算法挖掘中药药材与功效之间的关联规则,为中医药学研究提供了数据支持和可视化分析工具。