k-means算法实现python
import numpy as np
import 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 = 0for e in arr:d = 0for i in range(k_arr.__len__()):d = d + np.sqrt(distance(k_arr[i], e))if d > max_d:max_d = df = ereturn 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 = dc = ereturn cif __name__=="__main__":## 生成二维随机坐标(如果有数据集就更好)arr = np.random.randint(100, size=(100, 1, 2))[:, 0, :] # 取所有数据的第0列到最后一列数据,100是上限,默认下限为0# print(arr)## 初始化聚类中心和聚类容器m = 5r = np.random.randint(arr.__len__() - 1)k_arr = np.array([arr[r]]) # 取到随机一个数据print(k_arr)cla_arr = [[]]for i in range(m-1):k = farthest(k_arr, arr)# print("k:",k)k_arr = np.concatenate([k_arr, np.array([k])]) # 竖着拼接这两个元素# print("k_arr",k_arr)cla_arr.append([])# print("cla:",cla_arr)## 迭代聚类n = 20cla_temp = cla_arrfor 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 = jcla_temp[ki].append(e)# 迭代更新聚类中心for k in range(k_arr.__len__()):if n - 1 == i:breakk_arr[k] = means(cla_temp[k])cla_temp[k] = []print(cla_temp)## 可视化展示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()
k-means算法实现python相关推荐
- Fuzzy C Means 算法及其 Python 实现——写得很清楚,见原文
Fuzzy C Means 算法及其 Python 实现 转自:http://note4code.com/2015/04/14/fuzzy-c-means-%E7%AE%97%E6%B3%95%E5% ...
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- 分类算法python程序_分类算法——k最近邻算法(Python实现)(文末附工程源代码)...
kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...
- 机器学习——聚类之k近邻算法及python使用
聚类算法之k近邻及python使用 什么是k近邻算法 k近邻算法流程 使用sklearn进行代码实现 数据集介绍 标准化 代码实现 写在开头,套用我的老师的一句话目前所有自然学科的前沿都是在研究数学, ...
- K近邻算法的Python实现
作为『十大机器学习算法』之一的K-近邻(K-Nearest Neighbors)算法是思想简单.易于理解的一种分类和回归算法.今天,我们来一起学习KNN算法的基本原理,并用Python实现该算法,最后 ...
- k means算法C语言伪代码,K均值算法(K-Means)
1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...
- WIFI定位实验K近邻算法 C# Python混合实现
文章目录 前言 一.前期准备 开发环境: 二.Python KNN深度学习 算法 1.库引用 附录:训练数据 2.读入数据 3.预处理数据 三.Sklearn算法 创建模型 1.调整模型参数 2.训练 ...
- k均值聚类算法(K Means)及其实战案例
算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...
- 手把手教你在多种无监督聚类算法实现Python(附代码)
来源: 机器之心 本文约2704字,建议阅读6分钟. 本文简要介绍了多种无监督学习算法的 Python 实现,包括 K 均值聚类.层次聚类.t-SNE 聚类.DBSCAN 聚类. 无监督学习是一类用于 ...
- K means 图片压缩
k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...
最新文章
- 计算机对下列几种存储器访问速度,2005年7月自考02275计算机基础与程序设计真题及答案...
- odps结合mysql统计
- hdu1196 Lowest Bit
- 诗与远方:无题(四十二)
- Programmer,Developer,Engineer——软件从业人员的职业规划
- 计算机视觉入门和进阶学习
- 跟随我在oracle学习php(42)
- 基于SSM框架的简单图书管理系统
- DolphinPHP(海豚PHP)实战教程
- jenkins(六):Jenkins节点管理
- 主机甲和主机乙之间使用后退N帧协议(GBN)传输数据,甲的发送窗口为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧......[数据传输率]错题总结
- hdu 5294 Tricks Device 最短路建图+最小割
- Docker 搭建PHP开发环境
- 媒体领域AI能力测评,黑白图像上色、一键微笑哪家强
- 初步研究iphone充电方案及充电协议(一)
- Intrinsics函数Tips与踩坑
- java虚拟机内存查看相关命令
- 从华为P20开始的脑洞之旅:AI如何改变未来手机生活
- 12、可观测性--告警处理
- 逐梦人工智能,普通人也能用百度AI实现梦想