day3 python学习
KMeans Clustering 聚类算法
class KMeans:
Kmeans聚类算法实现
'''Kmeans聚类算法实现'''
复制
初始化
def __init__(self, k, times): '''初始化 Parameters ----- k: int 聚成几个类 times: int 迭代次数 ''' self.k = k self.times = times
复制
根据所给数据训练
def fit(self, X): '''根据所给数据训练 Pararmeters ------ X: 类数组类型,形如:[样本数量,特征数量] ''' X = np.asarray(X) # 设置随机数种子,以便于可以相同的随机系列,以便随机结果重现 np.random.seed(0) # 从数组中随机选择K个点作为初始聚类中心 self.cluster_centers_ = X[np.random.randint(0, len(X), self.k)] # 用于存放数据所属标签 self.labels_ = np.zeros(len(X)) # 开始迭代 for t in tqdm(range(self.times)): # 循环遍历样本计算每个样本与聚类中心的距离 for index,x in enumerate(X): # 计算每个样本与每个聚类中心的欧式距离 dis = np.sqrt(np.sum((x - self.cluster_centers_)**2, axis=1)) # 将最小距离的索引赋值给标签数组,索引的值就是当前所属的簇。范围威威(0,K-1) self.labels_[index] = dis.argmin() # 循环便利每一个数更新聚类中心 for i in range(self.k): # 计算每个簇内所有点的均值,用来更新聚类中心 self.cluster_centers_[i] = np.mean(X[self.labels_==i], axis=0)
复制
预测样本属于哪个簇
def predict(self, X): '''预测样本属于哪个簇 Parameters ----- x: 类数组类型。形如[样本数量。特征数量] Reeturn ----- result: 类数组,每一个x所属的簇 ''' X = np.asarray(X) result = np.zeros(len(X)) for index,x in enumerate(X): # 计算样本与聚类中心的距离 dis = np.sqrt(np.sum((x - self.cluster_centers_)**2, axis=1)) # 找到距离最近的聚类中中心划分一个类别 result[index] = dis.argmin() return result
复制
全部一览
class KMeans:
'''Kmeans聚类算法实现'''
def __init__(self, k, times):
'''初始化
Parameters
-----
k: int 聚成几个类
times: int 迭代次数
'''
self.k = k
self.times = times
def fit(self, X):
'''根据所给数据训练
Pararmeters
------
X: 类数组类型,形如:[样本数量,特征数量]
'''
X = np.asarray(X)
# 设置随机数种子,以便于可以相同的随机系列,以便随机结果重现
np.random.seed(0)
# 从数组中随机选择K个点作为初始聚类中心
self.cluster_centers_ = X[np.random.randint(0, len(X), self.k)]
# 用于存放数据所属标签
self.labels_ = np.zeros(len(X))
# 开始迭代
for t in tqdm(range(self.times)):
# 循环遍历样本计算每个样本与聚类中心的距离
for index,x in enumerate(X):
# 计算每个样本与每个聚类中心的欧式距离
dis = np.sqrt(np.sum((x - self.cluster_centers_)**2, axis=1))
# 将最小距离的索引赋值给标签数组,索引的值就是当前所属的簇。范围威威(0,K-1)
self.labels_[index] = dis.argmin()
# 循环便利每一个数更新聚类中心
for i in range(self.k):
# 计算每个簇内所有点的均值,用来更新聚类中心
self.cluster_centers_[i] = np.mean(X[self.labels_==i], axis=0)
def predict(self, X):
'''预测样本属于哪个簇
Parameters
-----
x: 类数组类型。形如[样本数量。特征数量]
Reeturn
-----
result: 类数组,每一个x所属的簇
'''
X = np.asarray(X)
result = np.zeros(len(X))
for index,x in enumerate(X):
# 计算样本与聚类中心的距离
dis = np.sqrt(np.sum((x - self.cluster_centers_)**2, axis=1))
# 找到距离最近的聚类中中心划分一个类别
result[index] = dis.argmin()
return result
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
day3 python学习
KMeans Clustering 聚类算法
class KMeans:
Kmeans聚类算法实现
2年前

评论
day3 python学习
KMeans Clustering 聚类算法
class KMeans:
Kmeans聚类算法实现
2年前

评论
相关阅读
[MYSQL] 服务器出现大量的TIME_WAIT, 每天凌晨就清零了
大大刺猬
186次阅读
2025-04-01 16:20:44
官宣,Milvus SDK v2发布!原生异步接口、支持MCP、性能提升
ZILLIZ
129次阅读
2025-04-02 09:34:13
python操作MySQL数据库
怀念和想念
50次阅读
2025-03-30 23:22:07
WingPro for Mac 强大的Python开发工具 v10.0.9注册激活版
一梦江湖远
50次阅读
2025-03-29 10:33:27
AI与我共创WEB界面
布衣
41次阅读
2025-04-14 22:13:51
python排序sort()和sorted()区别
wzf0072
39次阅读
2025-04-09 19:57:46
跟着论文学习数据库7:向量数据库
SQL和数据库技术
30次阅读
2025-04-01 12:27:00
PostgreSQL 虚拟文件描述符
PolarDB
24次阅读
2025-04-25 10:10:46
IBM Db2 Warehouse云原生存储架构最新进展
数据库应用创新实验室
21次阅读
2025-04-15 09:56:59
rust重写一切的风吹到了python
DBA札记
19次阅读
2025-04-03 09:56:08