python文本聚类dbscan_【IT专家】聚类算法——python实现学习向量量化(LVQ)算法

聚类算法

——python

实现学习向量量化(

LVQ

)算法

2017/05/13 2391

算法思想

学习向量量化算法和

K

均值算法类似,是找到一组

原型向量来聚类,

每一个原型向量代表一个簇,将空间划分为若干个簇,从而对于

任意的样本,可以将它划入到与它距离最近的簇中。特别的是

LVQ

假设数据样本

带有类别标记,可以用这些类别标记来辅助聚类。

大致思想如下:

1.

统计样本的类别,假设一共有

q

类,初始化为原型向量的

标记为

{t1,t2,……,tq}

。从样本中随机选取

q

个样本点位原型向量

{p1, p2 ,……, pq}

初始化一个学习率

a,a

取值范围

(0,1)

2.

从样本集中随机选取一个样本

(x, y)

,计

算该样本与

q

个原型向量的距离(欧几里得距离)

,找到最小的那个原型向量

p

,判

断样本的标记

y

与原型向量的标记

t

是不是一致。若一致则更新为

p

=

p

+

a*(x-

p)

,否则更新为

p

= p - a*(x - p)

3.

重复第

2

步直到满足停止条件。

(如达到最

大迭代次数)

4.

返回

q

个原型向量。

举例说明

样本集比较小,只是举一个例子。

# -*- coding:utf-8 -*-import reimport mathimport numpy as npimport pylab as pldata =

\”““1,0.697,0.46,Y,2,0.774,0.376,Y,3,0.634,0.264,Y,4,0.608,0.318,Y,5,0.556,0.215,Y,6,0.

403,0.237,Y,7,0.481,0.149,Y,8,0.437,0.211,Y,9,0.666,0.091,N,10,0.639,0.161,N,11,0.657,

0.198,N,12,0.593,0.042,N,13,0.719,0.103,N”““#

定义一个西瓜类,四个属性,分别是编

号,密度,含糖率,是否好瓜

class

watermelon:

def

__init__(self,

properties):

self.number

=

properties[0]

self.density

=

float(properties[1])

self.sweet

=

float(properties[2])

self.good

=

properties[3]#

数据简单处理

a

=

re.split(‘,’,

data.strip(“

“))dataset = [] #dataset:

数据集

for i in range(int(len(a)/4)): temp = tuple(a[i * 4: i * 4 + 4])

dataset.append(watermelon(temp))#

计算欧几里得距离

,a,b

分别为两个元组

def

dist(a,

b):

return

math.sqrt(math.pow(a[0]-b[0],

2)+math.pow(a[1]-b[1],

2))#

算法模型

def

LVQ(dataset,

a,

max_iter):

#

统计样本一共有多少个分类

T

=

list(set(i.good

for

i

in

dataset)) #

随机产生原型向量

P = [(i.density, i.sweet) for i in np.random.choice(dataset,

len(T))]

while

max_iter

0:

X

=

np.random.choice(dataset,

1)[0]

index

=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值