Вы можете проверить, к какому узлу относится каждое наблюдение, вызвав переменную модели, а именно unit.classif.Основываясь на ваших сценариях, вы назначаете модель для som_model.Поэтому вы можете вызвать
som_model$unit.classif
. Вектор упорядочен в соответствии с порядком строк ваших данных, т.е. ваши первые входные данные принадлежат узлу, обозначенному значением вектора 1st unit.classif, и так далее.Вы можете проверить, позвонив
length(som_model$unit.classif)
nrow(som_wines)
Они имеют одинаковую длину.Библиотека упорядочивает узлы в матрице, чье количество измерений (узлов х функций).Если вы определили, что ваша модель имеет 5x5 узлов, а ваши данные имеют 13 функций, то узел вашей модели будет обозначаться как матрица 25x13.Вы можете проверить, позвонив по номеру
dim(som_model$codes[[1]])
. На карте узлы расположены сверху вниз слева направо вверх.Первый узел находится слева внизу, а 25-й узел находится в правом верхнем углу карты кодов.Поэтому, если вы хотите узнать положение узла, которому принадлежат определенные данные, вы можете расширить свой сценарий до следующего вида:
from.bottom <- ceiling(som_model$unit.classif / som_model$grid$xdim)
from.left <- som_model$unit.classif %% som_model$grid$xdim
from.left[from.left == 0] <- som_model$grid$xdim
cluster_details <- cbind(
cluster_details, som.unit = som_model$unit.classif,
from.bottom = from.bottom, from.left = from.left
)
(cluster_details)