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