前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】实现最大最小距离算法

【Python】实现最大最小距离算法

原创
作者头像
用户7718188
修改2021-11-01 09:25:01
1.4K0
修改2021-11-01 09:25:01
举报
文章被收录于专栏:高级工程司

# 最大最小距离算法的Python实现

# 数据集形式data=[[],[],...,[]]

# 聚类结果形式result=[[[],[],...],[[],[],...],...]

# 其中[]为一个模式样本,[[],[],...]为一个聚类

import math

def start_cluster(data, t):

zs = [data[0]] # 聚类中心集,选取第一个模式样本作为第一个聚类中心Z1

# 第2步:寻找Z2,并计算阈值T

T = step2(data, t, zs)

# 第3,4,5步,寻找所有的聚类中心

get_clusters(data, zs, T)

# 按最近邻分类

result = classify(data, zs, T)

return result

# 分类

def classify(data, zs, T):

result = [[] for i in range(len(zs))]

for aData in data:

min_distance = T

index = 0

for i in range(len(zs)):

temp_distance = get_distance(aData, zs[i])

if temp_distance < min_distance:

min_distance = temp_distance

index = i

result[index].append(aData)

return result

# 寻找所有的聚类中心

def get_clusters(data, zs, T):

max_min_distance = 0

index = 0

for i in range(len(data)):

min_distance = []

for j in range(len(zs)):

distance = get_distance(data[i], zs[j])

min_distance.append(distance)

min_dis = min(dis for dis in min_distance)

if min_dis > max_min_distance:

max_min_distance = min_dis

index = i

if max_min_distance > T:

zs.append(data[index])

# 迭代

get_clusters(data, zs, T)

# 寻找Z2,并计算阈值T

def step2(data, t, zs):

distance = 0

index = 0

for i in range(len(data)):

temp_distance = get_distance(data[i], zs[0])

if temp_distance > distance:

distance = temp_distance

index = i

# 将Z2加入到聚类中心集中

zs.append(data[index])

# 计算阈值T

T = t * distance

return T

# 计算两个模式样本之间的欧式距离

def get_distance(data1, data2):

distance = 0

for i in range(len(data1)):

distance += pow((data1[i]-data2[i]), 2)

return math.sqrt(distance)

if __name__=='__main__':

data = [[0, 0], [3, 8], [1, 1], [2, 2], [5, 3], [4, 8], [6, 3], [5, 4], [6, 4], [7, 5]]

t = 0.5 #比例因子

result = start_cluster(data, t)

for i in range(len(result)):

print("----------第" + str(i+1) + "个聚类----------")

print(result[i])

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档