1.数据库

库的名字:owl_test

表的名字:data1

2.Python代码

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import pymysqlconn = pymysql.Connect(host='localhost',  #//连接IP地址,如果是本地就是localhostuser='root',       #//数据库用户名passwd='xxxx',   #//数据库密码db='owl_test',         #//需要查询的数据库名charset='utf8'     #//编码
)c = conn.cursor()      #//游标,上一行数据查完后,游标移至下一行继续查询
c.execute('select * from data1')    #//执行这条查询语句
row = c.fetchall()     #//fetchall查询全部
#转化一下数据类型
tp1 = row
arr1 = np.array(tp1,dtype=float)def kmeans(data, k, iterations=500): # interations是最大迭代次数num_data, num_attr = data.shape  # 获取data矩阵的行数和列数print('行的数量:',num_data,'列的数量',num_attr)randint = np.arange(k)           # arange函数用于创建等差数组,创建一个含有k个元素的等差数组np.random.shuffle(randint)       # np.random.shuffle(arr),将刚创建的等差数组打乱顺序iniCentriods = data[randint, :]  # 随机取data中的k个点作为初始聚类中心centroids = iniCentriodsfor itr in range(iterations):pre_centroids = centroids  # 上一次求得的中心位置tags = np.zeros((num_data, k))  # 分类标签矩阵# 寻找最近中心,更新中心for i in range(num_data):d = np.zeros((1, k))#zeros(shape, dtype=float, order='C')# 返回:返回来一个给定形状和类型的用0填充的数组;参数:shape:形状 dtype:数据类型,可选参数,默认numpy.float64dist = d  # 初始化标准差# 计算每个点到每个中心点的标准差for j in range(k):dist[0, j] = np.linalg.norm((data[i, :] - centroids[j, :]))  # 二范数计算欧氏距离index = np.argmin(dist)  # 寻找距离最小的类别索引# minDistance = dist[0, np.argmin(dist)]tags[i, index] = 1  # 标记最小距离所处的位置(类别)# 取均值更新聚类中心点for i in range(k):if sum(tags[:, i]) != 0:# 未出现空类,计算均值作为下一聚类中心for j in range(num_attr):centroids[i, j] = sum(tags[:, i] * data[:, j]) / sum(tags[:, i])else:# 如果出现空类,从数据集中随机选中一个点作为中心randidx = np.random.shuffle(np.arange(num_data))centroids[i, :] = data[randidx[0], :]tags[randidx, :] = 0tags[randidx, i] = 1if np.sum(np.linalg.norm(pre_centroids - centroids)) < .001:breakdistance_list = []idx_list = []for i in range(num_data):d = np.zeros((1, k))dist = dfor j in range(k):dist[0, j] = np.linalg.norm(data[i, :] - centroids[j, :])distance_list.append(dist[0, np.argmin(dist)])idx_list.append(np.argmin(dist))idx_list = np.array(idx_list)global aaa_arrayaaa_array = np.array(idx_list)print('The labels of data points are:',idx_list)# 画图for i in range(k):x = data[idx_list == i]plt.scatter(x[:, 0], x[:, 1])plt.xlabel('longitude')plt.ylabel('latitude')plt.grid()plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.title('4个簇点的聚类图')plt.show()return idx_listdata = arr1  # 读取数据
idx = kmeans(data, k=4)  # 分成4个簇类#把聚类结果写入Excel
data1 = pd.DataFrame(aaa_array)
writer = pd.ExcelWriter('label3.xlsx')
data1.to_excel(writer, 'sheet_1', float_format='%.2f', header=False, index=False)
writer.save()

3.结果图

读数据库版本的、利用K-means聚类方法做经纬度聚合相关推荐

  1. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  2. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  3. ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法

    ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法 参考文章: (1)ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法 (2)ht ...

  4. 广告推广是什么意思?利用文章推广的方法做广告推广技巧总结

    广告推广是什么意思? 鲨鱼网媒小编为您解答:广告推广是指通过文字.图片.视频等形式,利用广告媒介将广告宣传信息传播给目标受众,从而实现商品或服务的销售和推广的过程.文章推广是利用文章的形式,通过文字的 ...

  5. k means聚类算法_K-Means 聚类算法 20210108

    说到聚类,应先理解聚类和分类的区别 聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来. K-Means 聚类算法有很多种 ...

  6. 第十四章聚类方法.14.2聚合聚类 距离公式介绍

    文章目录 主要内容 聚合聚类的具体过程 聚合聚类算法与案例 系统聚类法基本思想 八种距离方法 本课程来自深度之眼,部分截图来自课程视频以及李航老师的<统计学习方法>第二版. 公式输入请参考 ...

  7. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  8. Oracle 数据库版本和位数sql语句查看方法

    想用 navicat.PL/SQL 等工具连接 oracle,因为需要 Instant Client,而 Instant Client 的版本和位数需要跟要连接的数据库对应上才能成功连接,所以我们就要 ...

  9. 聚类分析 | MATLAB实现k-Means(k均值聚类)分析

    目录 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k-均值聚类简介 相关描述 程序设计 学习小结 参考资料 致谢 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k ...

最新文章

  1. arduino nano 蓝牙_探索 Golang 云原生游戏服务器开发,5 分钟上手 Nano 游戏服务器框架...
  2. 动态生成的DIV加上DWZ后如何分页的问题
  3. 奇异值分解和图像压缩
  4. docker安装mycat_分布式数据库中间件 MyCat 搞起来!
  5. js java socket_js使用WebSocket,java使用WebSocket
  6. 2.5D屏幕有什么好处?
  7. PaddlePaddle中内置数据集分析
  8. 【Python实例第35讲】高斯过程分类:Iris数据集
  9. 1.三层交换,ACL,PPP,OSPF,热备
  10. java高级类_Java私塾跟我学系列——JAVA篇 第五章 Java高级类特性
  11. LTE中QPSK、16QAM、64QAM什么意思?有什么区别,分别在什么情况下占用呢?
  12. 苹果系统下载了python软件怎么卸载_mac怎么卸载pycharm
  13. 备件采购可应用的几种需求预测方法
  14. qq位置如何用启动百度地图定位服务器,腾讯位置服务API快速入门
  15. 计算机毕业设计Java星星电影购票网站(源码+系统+mysql数据库+lw文档)
  16. 选择排序法(C语言)
  17. 多阶段渐进式图像恢复 | 去雨、去噪、去模糊 | 有效教程(附源码)|【CVPR 2021】
  18. html a 下划线
  19. 浅析云计算的六种架构
  20. String[]数组初始化

热门文章

  1. 学习KeyShot 3D 动画要点
  2. nextcloud 修改 logo
  3. cookie和token身份验证
  4. 无监督关键短语的生成问题博客02--extract.py的分析
  5. 妇产科护理学试题及答案(整理版)
  6. python语言表白超炫图形_经验分享 篇二:三分钟教你用Excel制作各种尺寸、底色的证件照...
  7. 【刷题打卡】day7-BFS
  8. Word修改默认英文字体为Times New Roman
  9. Redis(五)Redis内存维护方案(过期策略及淘汰策略)
  10. rk3288编译android,RK3288 源码编译Android 7.1.2 自动编译