Я новичок в python, так что надеюсь, что кто-нибудь может мне помочь. у нас есть список
X LABELS
[0.85142858] 1
[0.85566274] 0
[0.85364912] 0
[0.81536489] 2
Я применил k-средства для кластеризации этих элементов с k = 3.
Следующий скрипт вычисляет максимальную оценку SI для каждого элемента.
for i in range(len(X)):
s = []
print("Client", i+1, X[i])
for label in range(3):
b = []
print('S',label, ':')
a=euclidean_distances(X[[i]], X[kmedoids.medoid_indices_][[label]])
print('a:', label, a)
for k in range(3):
if k != label:
b.append(euclidean_distances(X[[i]], X[kmedoids.medoid_indices_][[k]]))
print('b:', k, b)
bmin=min(b)
print('miminum b', min(b))
print('bi-ai', bmin-a)
print('max{a_i, b_i)', max(a, bmin))
s.append((bmin-a)/(max(a, bmin)))
print('SI', s, label)
print("-------------------")
max_value = max(s)
print("SI, max value:", max_value)
print("***********************")
если мы предположим следующие результаты для элемента 1, где s0, s1, s2 представляют кластеры,
как мы могли бы назначить элемент 1 новому кластеру с максимальным значением (здесь [0,76259282] для кластера 0 )? поэтому мы меняем кластер для элемента 1 на 0 вместо 1.
element 1 [0.85142858]
S 0 :
SI [ array([[0.76259282]])]
-------------------
S 1 :
SI [array([[-0.76259282]])]
-------------------
S 2 :
SI [ array([[-0.96782002]])]
-------------------
SI, max value: [[0.76259282]]