Я пытаюсь выбрать лучший алгоритм для «кластеризации» в моих данных, у меня проблема в том, что, если я выбираю случайное число K, очевидно, что у каждого кластера есть n-наблюдений. Моя проблема: возможно определить минимальное количество наблюдений в каждом кластере? например, в кластере № 5 у меня есть только 1 наблюдение, могу ли яопределить минимальное количество из 5 наблюдений для каждого кластера?Теперь это мой код.
base <- readxl::read_xlsx("C:/Users/Data.xlsx","Sheet1")
base_cl <- select(base,
Id = ID,
companyId = companyId,
Revenue = Selected_Revenue,
EBITDA = Selected_EBITDA,
Liabilities = Selected_Liabilities,
Employees = Selected_Employees,
W_Ind = "W Industry",
Cap_Ind = "CAPIndustry",
Debt_Assets = "Selected_D/A",
Debt_Equity = "Selected_D/E",
Retention = Retention_AL,
Limit = Limit_AL,
Exposure = Exposure_AL,
LPremium = Liab_Premuim_AL,
lob = GL_R
)
base_cl <- base_cl %>%
filter(lob == "1") %>%
drop_na(Revenue)%>%
drop_na(EBITDA)%>%
drop_na(Limit)%>%
drop_na(Debt_Assets)%>%
drop_na(Debt_Equity) %>%
drop_na(Exposure) %>%
drop_na(LPremium) %>%
drop_na(Employees)
base_cl_2 <- base_cl %>%
dplyr::group_by(WTW_Ind) %>%
dplyr::summarize(Revenue = sum(Revenue),
EBITDA = sum(EBITDA),
Liabilities = sum(Liabilities),
Retention = sum(Retention),
Limit = sum(Limit),
D_A = sum(Debt_Assets),
D_E = sum(Debt_Equity),
Exposure = sum(Exposure),
LPremium = sum(LPremium),
Employees = sum(Employees))%>%
drop_na(WTW_Ind)
base_cl_2$Retention[is.na(base_cl_2$Retention)] <- 0
value <- base_cl_2$WTW_Ind
base_cl_2 <- select(base_cl_2, -WTW_Ind)
rownames(base_cl_2) <- value
my_data <- base_cl_2
head(my_data, n = 4)
res.dist <- get_dist(my_data, stand = TRUE, method = "pearson")
fviz_dist(res.dist, show_labels = TRUE,
gradient = list(low = "#00AFBB", mid = "white", high = "#FC4E07"))
fviz_nbclust(my_data, kmeans, method = "gap_stat") # silhouette,gap_stat
set.seed(123)
km.res <- kmeans(my_data,5, nstart = 25)
# Visualize
fviz_cluster(km.res, data = my_data,
ellipse.type = "convex",
palette = "jco",
ggtheme = theme_minimal())
# Compute PAM
pam.res <- pam(my_data, 5) ## More than 4 are innecesary
# Visualize
fviz_cluster(pam.res)
test <- pam(base_cl_2, 7)
str(si <- silhouette(test))
(ssi <- summary(si))
plot(si) # silhouette plot