使用竞争性网络查找集群的算法

时间:2018-10-24 04:25:21

标签: python algorithm neural-network cluster-analysis numpy-broadcasting

下面附上了我正在实现的算法。 (这是一种著名的竞争性学习算法)

Algorithm

这是使用竞争性学习(神经网络)对虹膜数据进行聚类。 我已经写了上面的算法。但是它不能准确地对数据进行聚类。在大多数情况下,它会为数据集的第一个群集对数据进行群集。我尝试了不同的学习率和互动方式,但无法提高准确性。在编写上述算法时我没有做任何错误吗? 如果不是,我应该怎么做才能用这种算法改善聚类?

#initialize wights randomly ( used 3 neurons as there are 3 clusters,4 variables )
W = np.random.rand(3,4)

#Weights normalization 
W = preprocessing.normalize(W)

#Normalize X
X = np.matrix(preprocessing.normalize(X))


t =[]
for i in range(len(X)):
    for j in range(1,500):
        wx = np.argmax(np.dot(W,X[i].getT()))
        #update winner neuron
        W[wx:] = W[wx:]+0.3*(X[i]-W[wx:])
        W = preprocessing.normalize(W)
    t.append(wx)
    #print(wx)
print(W)

0 个答案:

没有答案