数据挖掘 K-Medoid聚类实现实例

接着上一篇内容来讲,本次要实现K-Medoide聚类方法对waveform数据以及图像的分割。

K-Medoide聚类方法原理可参照 https://blog.csdn.net/qq_36076233/article/details/72991055

简而言之,K-Medoide就是将K-means求平均的方式替换成将各簇中所有点依次作为中心点对该簇所有点求距离之和进行遍历,最终距离之和最小的作为新的中心点即可。

优点:当存在噪音和孤立点时, PAM 比 k-平均方法更健壮。 这是因为中心点不象平均值那么容易被极端数据影响。

缺点:PAM对于小数据集工作得很好, 但不能很好地用于大数据集,每次迭代O(k(n-k)2 ),其中 n 是数据对象数目, k 是聚类数。

下面又进入代码环节:

import random 
import pandas as pd
import numpy as np
import tool

#设置精度小数点后两位
np.set_printoptions(precision=2)

#读取文件
df=pd.read_csv("waveform.data",header = None)

#增加20%的高斯噪声
for x in range(5000*22*0.2):
	i = random.randint(0,21)
	j = random.randint(0,4999)
	df[i][j] += random.gauss(0,0.5)  #均值维0,方差为0.5的高斯噪声


#随机选择三个中心点作为初始质心
i1 = random.randint(0,21)     #列标0-21
j1 = random.randint(0,4998)   #行标0-4999
cent1 = df[i1][j1]

i2 = random.randint(0,21)     
j2 = random.randint(0,4998)   
cent2 = df[i2][j2]

i3 = random.randint(0,21)     #列标0-21
j3 = random.randint(0,4998)   #行标0-4999
cent3 = df[i3][j3]

#聚类存储列表
list1 = []
list2 = []
list3 = []
list_sum = []

result = 1

while result:
	list1.clear()
	list2.clear()
	list3.clear()
	result = tool.circle_o (df,ce
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值