Library

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.3     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(factoextra)
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/en/product/practical-guide-to-principal-component-methods-in-r/
library(cluster)
library(dbscan)
## 
## Attaching package: 'dbscan'
## 
## The following object is masked from 'package:stats':
## 
##     as.dendrogram
library(corrplot)
## corrplot 0.95 loaded
library(e1071)
## 
## Attaching package: 'e1071'
## 
## The following object is masked from 'package:ggplot2':
## 
##     element

Load Data

data <- read.csv("menu.csv")

head(data)
##    Category                             Item   Serving.Size Calories
## 1 Breakfast                     Egg McMuffin 4.8 oz (136 g)      300
## 2 Breakfast                Egg White Delight 4.8 oz (135 g)      250
## 3 Breakfast                 Sausage McMuffin 3.9 oz (111 g)      370
## 4 Breakfast        Sausage McMuffin with Egg 5.7 oz (161 g)      450
## 5 Breakfast Sausage McMuffin with Egg Whites 5.7 oz (161 g)      400
## 6 Breakfast             Steak & Egg McMuffin 6.5 oz (185 g)      430
##   Calories.from.Fat Total.Fat Total.Fat....Daily.Value. Saturated.Fat
## 1               120        13                        20             5
## 2                70         8                        12             3
## 3               200        23                        35             8
## 4               250        28                        43            10
## 5               210        23                        35             8
## 6               210        23                        36             9
##   Saturated.Fat....Daily.Value. Trans.Fat Cholesterol
## 1                            25         0         260
## 2                            15         0          25
## 3                            42         0          45
## 4                            52         0         285
## 5                            42         0          50
## 6                            46         1         300
##   Cholesterol....Daily.Value. Sodium Sodium....Daily.Value. Carbohydrates
## 1                          87    750                     31            31
## 2                           8    770                     32            30
## 3                          15    780                     33            29
## 4                          95    860                     36            30
## 5                          16    880                     37            30
## 6                         100    960                     40            31
##   Carbohydrates....Daily.Value. Dietary.Fiber Dietary.Fiber....Daily.Value.
## 1                            10             4                            17
## 2                            10             4                            17
## 3                            10             4                            17
## 4                            10             4                            17
## 5                            10             4                            17
## 6                            10             4                            18
##   Sugars Protein Vitamin.A....Daily.Value. Vitamin.C....Daily.Value.
## 1      3      17                        10                         0
## 2      3      18                         6                         0
## 3      2      14                         8                         0
## 4      2      21                        15                         0
## 5      2      21                         6                         0
## 6      3      26                        15                         2
##   Calcium....Daily.Value. Iron....Daily.Value.
## 1                      25                   15
## 2                      25                    8
## 3                      25                   10
## 4                      30                   15
## 5                      25                   10
## 6                      30                   20
str(data)
## 'data.frame':    260 obs. of  24 variables:
##  $ Category                     : chr  "Breakfast" "Breakfast" "Breakfast" "Breakfast" ...
##  $ Item                         : chr  "Egg McMuffin" "Egg White Delight" "Sausage McMuffin" "Sausage McMuffin with Egg" ...
##  $ Serving.Size                 : chr  "4.8 oz (136 g)" "4.8 oz (135 g)" "3.9 oz (111 g)" "5.7 oz (161 g)" ...
##  $ Calories                     : int  300 250 370 450 400 430 460 520 410 470 ...
##  $ Calories.from.Fat            : int  120 70 200 250 210 210 230 270 180 220 ...
##  $ Total.Fat                    : num  13 8 23 28 23 23 26 30 20 25 ...
##  $ Total.Fat....Daily.Value.    : int  20 12 35 43 35 36 40 47 32 38 ...
##  $ Saturated.Fat                : num  5 3 8 10 8 9 13 14 11 12 ...
##  $ Saturated.Fat....Daily.Value.: int  25 15 42 52 42 46 65 68 56 59 ...
##  $ Trans.Fat                    : num  0 0 0 0 0 1 0 0 0 0 ...
##  $ Cholesterol                  : int  260 25 45 285 50 300 250 250 35 35 ...
##  $ Cholesterol....Daily.Value.  : int  87 8 15 95 16 100 83 83 11 11 ...
##  $ Sodium                       : int  750 770 780 860 880 960 1300 1410 1300 1420 ...
##  $ Sodium....Daily.Value.       : int  31 32 33 36 37 40 54 59 54 59 ...
##  $ Carbohydrates                : int  31 30 29 30 30 31 38 43 36 42 ...
##  $ Carbohydrates....Daily.Value.: int  10 10 10 10 10 10 13 14 12 14 ...
##  $ Dietary.Fiber                : int  4 4 4 4 4 4 2 3 2 3 ...
##  $ Dietary.Fiber....Daily.Value.: int  17 17 17 17 17 18 7 12 7 12 ...
##  $ Sugars                       : int  3 3 2 2 2 3 3 4 3 4 ...
##  $ Protein                      : int  17 18 14 21 21 26 19 19 20 20 ...
##  $ Vitamin.A....Daily.Value.    : int  10 6 8 15 6 15 10 15 2 6 ...
##  $ Vitamin.C....Daily.Value.    : int  0 0 0 0 0 2 8 8 8 8 ...
##  $ Calcium....Daily.Value.      : int  25 25 25 30 25 30 15 20 15 15 ...
##  $ Iron....Daily.Value.         : int  15 8 10 15 10 20 15 20 10 15 ...
summary(data)
##    Category             Item           Serving.Size          Calories     
##  Length:260         Length:260         Length:260         Min.   :   0.0  
##  Class :character   Class :character   Class :character   1st Qu.: 210.0  
##  Mode  :character   Mode  :character   Mode  :character   Median : 340.0  
##                                                           Mean   : 368.3  
##                                                           3rd Qu.: 500.0  
##                                                           Max.   :1880.0  
##  Calories.from.Fat   Total.Fat       Total.Fat....Daily.Value. Saturated.Fat   
##  Min.   :   0.0    Min.   :  0.000   Min.   :  0.00            Min.   : 0.000  
##  1st Qu.:  20.0    1st Qu.:  2.375   1st Qu.:  3.75            1st Qu.: 1.000  
##  Median : 100.0    Median : 11.000   Median : 17.00            Median : 5.000  
##  Mean   : 127.1    Mean   : 14.165   Mean   : 21.82            Mean   : 6.008  
##  3rd Qu.: 200.0    3rd Qu.: 22.250   3rd Qu.: 35.00            3rd Qu.:10.000  
##  Max.   :1060.0    Max.   :118.000   Max.   :182.00            Max.   :20.000  
##  Saturated.Fat....Daily.Value.   Trans.Fat       Cholesterol    
##  Min.   :  0.00                Min.   :0.0000   Min.   :  0.00  
##  1st Qu.:  4.75                1st Qu.:0.0000   1st Qu.:  5.00  
##  Median : 24.00                Median :0.0000   Median : 35.00  
##  Mean   : 29.97                Mean   :0.2038   Mean   : 54.94  
##  3rd Qu.: 48.00                3rd Qu.:0.0000   3rd Qu.: 65.00  
##  Max.   :102.00                Max.   :2.5000   Max.   :575.00  
##  Cholesterol....Daily.Value.     Sodium       Sodium....Daily.Value.
##  Min.   :  0.00              Min.   :   0.0   Min.   :  0.00        
##  1st Qu.:  2.00              1st Qu.: 107.5   1st Qu.:  4.75        
##  Median : 11.00              Median : 190.0   Median :  8.00        
##  Mean   : 18.39              Mean   : 495.8   Mean   : 20.68        
##  3rd Qu.: 21.25              3rd Qu.: 865.0   3rd Qu.: 36.25        
##  Max.   :192.00              Max.   :3600.0   Max.   :150.00        
##  Carbohydrates    Carbohydrates....Daily.Value. Dietary.Fiber  
##  Min.   :  0.00   Min.   : 0.00                 Min.   :0.000  
##  1st Qu.: 30.00   1st Qu.:10.00                 1st Qu.:0.000  
##  Median : 44.00   Median :15.00                 Median :1.000  
##  Mean   : 47.35   Mean   :15.78                 Mean   :1.631  
##  3rd Qu.: 60.00   3rd Qu.:20.00                 3rd Qu.:3.000  
##  Max.   :141.00   Max.   :47.00                 Max.   :7.000  
##  Dietary.Fiber....Daily.Value.     Sugars          Protein     
##  Min.   : 0.000                Min.   :  0.00   Min.   : 0.00  
##  1st Qu.: 0.000                1st Qu.:  5.75   1st Qu.: 4.00  
##  Median : 5.000                Median : 17.50   Median :12.00  
##  Mean   : 6.531                Mean   : 29.42   Mean   :13.34  
##  3rd Qu.:10.000                3rd Qu.: 48.00   3rd Qu.:19.00  
##  Max.   :28.000                Max.   :128.00   Max.   :87.00  
##  Vitamin.A....Daily.Value. Vitamin.C....Daily.Value. Calcium....Daily.Value.
##  Min.   :  0.00            Min.   :  0.000           Min.   : 0.00          
##  1st Qu.:  2.00            1st Qu.:  0.000           1st Qu.: 6.00          
##  Median :  8.00            Median :  0.000           Median :20.00          
##  Mean   : 13.43            Mean   :  8.535           Mean   :20.97          
##  3rd Qu.: 15.00            3rd Qu.:  4.000           3rd Qu.:30.00          
##  Max.   :170.00            Max.   :240.000           Max.   :70.00          
##  Iron....Daily.Value.
##  Min.   : 0.000      
##  1st Qu.: 0.000      
##  Median : 4.000      
##  Mean   : 7.735      
##  3rd Qu.:15.000      
##  Max.   :40.000
colSums(is.na(data))
##                      Category                          Item 
##                             0                             0 
##                  Serving.Size                      Calories 
##                             0                             0 
##             Calories.from.Fat                     Total.Fat 
##                             0                             0 
##     Total.Fat....Daily.Value.                 Saturated.Fat 
##                             0                             0 
## Saturated.Fat....Daily.Value.                     Trans.Fat 
##                             0                             0 
##                   Cholesterol   Cholesterol....Daily.Value. 
##                             0                             0 
##                        Sodium        Sodium....Daily.Value. 
##                             0                             0 
##                 Carbohydrates Carbohydrates....Daily.Value. 
##                             0                             0 
##                 Dietary.Fiber Dietary.Fiber....Daily.Value. 
##                             0                             0 
##                        Sugars                       Protein 
##                             0                             0 
##     Vitamin.A....Daily.Value.     Vitamin.C....Daily.Value. 
##                             0                             0 
##       Calcium....Daily.Value.          Iron....Daily.Value. 
##                             0                             0

Feature Selection

dt1 <- data %>%
  select(Calories, Total.Fat, Carbohydrates, Protein, Sugars, Sodium)
head(dt1)
##   Calories Total.Fat Carbohydrates Protein Sugars Sodium
## 1      300        13            31      17      3    750
## 2      250         8            30      18      3    770
## 3      370        23            29      14      2    780
## 4      450        28            30      21      2    860
## 5      400        23            30      21      2    880
## 6      430        23            31      26      3    960

Korelasi Heatmap

#heatmap korelasi 
corr_matrix <- cor(dt1, use = "complete.obs")

corrplot(corr_matrix, method = "color", type = "upper",
         addCoef.col = "black", tl.col = "black",
         title = "Heatmap Fitur Terpilih")

## Normalisasi Data

dt_scaled <- scale(dt1)
dt_scaled <- as.data.frame(dt_scaled)

Visualisasi Awal

plot(dt1$Protein, dt1$Total.Fat,
     xlab = "Protein",
     ylab = "Total Fat",
     main = "Visualisasi Awal Data",
     pch = 19)

Elbow Method

wss <- vector()

for (k in 1:10) {
  kmeans_model <- kmeans(dt_scaled, centers = k, nstart = 25)
  wss[k] <- kmeans_model$tot.withinss
}

plot(1:10, wss, type = "b",
     xlab = "Jumlah Cluster",
     ylab = "Inertia (WSS)",
     main = "Elbow Method")

K-Means Clustering

set.seed(42)
kmeans_model <- kmeans(dt_scaled, centers = 3, nstart = 25)

dt1$cluster_kmeans <- kmeans_model$cluster

head(dt1)
##   Calories Total.Fat Carbohydrates Protein Sugars Sodium cluster_kmeans
## 1      300        13            31      17      3    750              1
## 2      250         8            30      18      3    770              1
## 3      370        23            29      14      2    780              3
## 4      450        28            30      21      2    860              3
## 5      400        23            30      21      2    880              3
## 6      430        23            31      26      3    960              3
plot(dt1$Calories, dt1$Total.Fat,
     col = dt1$cluster_kmeans,
     pch = 19,
     main = "K-Means Clustering")

Hierarchical Clustering

dist_matrix <- dist(dt_scaled, method = "euclidean")
hc <- hclust(dist_matrix, method = "ward.D2")

plot(hc, main = "Dendrogram")

dt1$cluster_hier <- cutree(hc, k = 3)

DBSCAN

dbscan_model <- dbscan(dt_scaled, eps = 0.8, minPts = 5)

dt1$cluster_dbscan <- dbscan_model$cluster

plot(dt1$Calories, dt1$Total.Fat,
     col = dt1$cluster_dbscan + 1,
     pch = 19,
     main = "DBSCAN Clustering")

Fuzzy C-Means

set.seed(42)
fcm <- cmeans(dt_scaled, centers = 3, m = 2)
dt1$cluster_fcm <- fcm$cluster

fcm$membership
##                 1          2           3
##   [1,] 0.43073631 0.18149268 0.387771010
##   [2,] 0.50187662 0.18027328 0.317850096
##   [3,] 0.30087481 0.17159184 0.527533341
##   [4,] 0.11116684 0.09497799 0.793855169
##   [5,] 0.15152102 0.11255084 0.735928133
##   [6,] 0.08684598 0.07616374 0.836990283
##   [7,] 0.05367772 0.05157039 0.894751888
##   [8,] 0.03775606 0.04208238 0.920161563
##   [9,] 0.09628199 0.08136566 0.822352357
##  [10,] 0.04214024 0.04347278 0.914386978
##  [11,] 0.19546282 0.15043026 0.654106918
##  [12,] 0.14229741 0.13440336 0.723299239
##  [13,] 0.06468710 0.06590689 0.869406008
##  [14,] 0.06197020 0.07233654 0.865693258
##  [15,] 0.07561339 0.06844240 0.855944213
##  [16,] 0.04988852 0.05371327 0.896398208
##  [17,] 0.12563445 0.10561326 0.768752294
##  [18,] 0.06522847 0.06751950 0.867252029
##  [19,] 0.02890678 0.03243353 0.938659687
##  [20,] 0.06355988 0.07677390 0.859666212
##  [21,] 0.13146729 0.14008185 0.728450862
##  [22,] 0.21458604 0.20618985 0.579224110
##  [23,] 0.02644115 0.03627652 0.937282330
##  [24,] 0.02109835 0.02690287 0.951998780
##  [25,] 0.03412190 0.04818794 0.917690163
##  [26,] 0.02847991 0.03864963 0.932870466
##  [27,] 0.05630633 0.07994326 0.863750415
##  [28,] 0.09794392 0.13243886 0.769617227
##  [29,] 0.11904615 0.16390258 0.717051273
##  [30,] 0.05049563 0.06568977 0.883814600
##  [31,] 0.07583900 0.10299488 0.821166120
##  [32,] 0.17610499 0.27533486 0.548560147
##  [33,] 0.18550144 0.28433746 0.530161102
##  [34,] 0.16356159 0.26292803 0.573510383
##  [35,] 0.17409567 0.27473263 0.551171700
##  [36,] 0.45017729 0.33993368 0.209889027
##  [37,] 0.11677861 0.18864889 0.694572506
##  [38,] 0.48318014 0.17290751 0.343912357
##  [39,] 0.85961814 0.07457707 0.065804783
##  [40,] 0.20872770 0.63808228 0.153190022
##  [41,] 0.55301836 0.36294205 0.084039588
##  [42,] 0.80038677 0.14226473 0.057348499
##  [43,] 0.02060962 0.02675501 0.952635378
##  [44,] 0.02231749 0.02737511 0.950307399
##  [45,] 0.05741284 0.07812853 0.864458629
##  [46,] 0.05810147 0.07925947 0.862639060
##  [47,] 0.02596287 0.03373834 0.940298788
##  [48,] 0.13251579 0.17818884 0.689295367
##  [49,] 0.75097553 0.12348567 0.125538797
##  [50,] 0.52946866 0.18602851 0.284502821
##  [51,] 0.07579182 0.06977524 0.854432943
##  [52,] 0.09095332 0.13142712 0.777619560
##  [53,] 0.20267841 0.14911893 0.648202658
##  [54,] 0.05293142 0.05210409 0.894964497
##  [55,] 0.14912076 0.12737426 0.723504985
##  [56,] 0.07599912 0.06866379 0.855337084
##  [57,] 0.03180899 0.03883428 0.929356722
##  [58,] 0.03745779 0.05237571 0.910166506
##  [59,] 0.24261987 0.20138983 0.555990303
##  [60,] 0.06256368 0.09310278 0.844333536
##  [61,] 0.09346152 0.11390695 0.792631529
##  [62,] 0.03440476 0.05041132 0.915183923
##  [63,] 0.10525861 0.11807239 0.776668994
##  [64,] 0.09365219 0.14425540 0.762092416
##  [65,] 0.08127553 0.11087446 0.807850014
##  [66,] 0.11871265 0.11274739 0.768539959
##  [67,] 0.34326908 0.20046683 0.456264088
##  [68,] 0.02181529 0.02364774 0.954536967
##  [69,] 0.06850871 0.06536621 0.866125079
##  [70,] 0.28223097 0.18163779 0.536131244
##  [71,] 0.04520429 0.06310645 0.891689266
##  [72,] 0.07776411 0.08792312 0.834312772
##  [73,] 0.01914085 0.02752822 0.953330930
##  [74,] 0.06406980 0.06807034 0.867859861
##  [75,] 0.05399762 0.08730213 0.858700255
##  [76,] 0.04093259 0.05515215 0.903915267
##  [77,] 0.03020427 0.04701538 0.922780347
##  [78,] 0.16747604 0.16870555 0.663818411
##  [79,] 0.79187651 0.09796764 0.110155851
##  [80,] 0.56149367 0.16195569 0.276550636
##  [81,] 0.09018422 0.08082007 0.828995713
##  [82,] 0.15887183 0.21466130 0.626466875
##  [83,] 0.25467310 0.31118529 0.434141616
##  [84,] 0.34154712 0.21431358 0.444139293
##  [85,] 0.86103827 0.07086104 0.068100693
##  [86,] 0.18303260 0.13005463 0.686912773
##  [87,] 0.41621958 0.19538767 0.388392755
##  [88,] 0.94584179 0.03094325 0.023214959
##  [89,] 0.08724945 0.09642436 0.816326188
##  [90,] 0.36507631 0.21238988 0.422533814
##  [91,] 0.39380804 0.20424178 0.401950178
##  [92,] 0.56927096 0.17540780 0.255321239
##  [93,] 0.43176917 0.18870618 0.379524647
##  [94,] 0.59601920 0.16124209 0.242738711
##  [95,] 0.30291677 0.17178132 0.525301910
##  [96,] 0.49672108 0.17007223 0.333206687
##  [97,] 0.85154931 0.08468242 0.063768270
##  [98,] 0.63554947 0.20539480 0.159055735
##  [99,] 0.30844530 0.36378178 0.327772926
## [100,] 0.88697095 0.06394640 0.049082649
## [101,] 0.83368567 0.09386759 0.072446733
## [102,] 0.83075926 0.09628429 0.072956454
## [103,] 0.97953606 0.01375950 0.006704440
## [104,] 0.86018331 0.08666246 0.053154230
## [105,] 0.96039784 0.02438778 0.015214386
## [106,] 0.96712498 0.02004704 0.012827975
## [107,] 0.86567662 0.07732663 0.056996756
## [108,] 0.29260425 0.63483205 0.072563705
## [109,] 0.27990525 0.64686214 0.073232604
## [110,] 0.51853625 0.40868169 0.072782060
## [111,] 0.80685006 0.14412046 0.049029477
## [112,] 0.50913184 0.40680594 0.084062217
## [113,] 0.25651106 0.65023311 0.093255831
## [114,] 0.90998893 0.06146851 0.028542562
## [115,] 0.80605869 0.10796154 0.085979771
## [116,] 0.80627368 0.10771250 0.086013826
## [117,] 0.80652702 0.10737609 0.086096894
## [118,] 0.80617077 0.10783455 0.085994683
## [119,] 0.85190639 0.10788011 0.040213499
## [120,] 0.56503503 0.35444135 0.080523619
## [121,] 0.27905427 0.63006404 0.090881687
## [122,] 0.92017601 0.05374302 0.026080969
## [123,] 0.81185919 0.10319837 0.084942442
## [124,] 0.81285032 0.10182588 0.085323804
## [125,] 0.81218521 0.10116483 0.086649963
## [126,] 0.80967052 0.10506456 0.085264923
## [127,] 0.83661221 0.12004165 0.043346135
## [128,] 0.52478025 0.39202912 0.083190630
## [129,] 0.26128539 0.64686012 0.091854490
## [130,] 0.91682728 0.05625563 0.026917085
## [131,] 0.92048930 0.04560480 0.033905906
## [132,] 0.94710763 0.03343239 0.019459979
## [133,] 0.92120817 0.05038366 0.028408178
## [134,] 0.90982627 0.06416056 0.026013173
## [135,] 0.76658688 0.18074443 0.052668691
## [136,] 0.31770167 0.60265840 0.079639933
## [137,] 0.80580716 0.10823029 0.085962544
## [138,] 0.80605869 0.10796154 0.085979771
## [139,] 0.80605869 0.10796154 0.085979771
## [140,] 0.80617077 0.10783455 0.085994683
## [141,] 0.80593747 0.10809346 0.085969067
## [142,] 0.85550159 0.10598033 0.038518079
## [143,] 0.70075215 0.23531913 0.063928718
## [144,] 0.50783693 0.41056302 0.081600049
## [145,] 0.91728493 0.05615228 0.026562788
## [146,] 0.80580716 0.10823029 0.085962544
## [147,] 0.80580716 0.10823029 0.085962544
## [148,] 0.80580716 0.10823029 0.085962544
## [149,] 0.91488308 0.04797859 0.037138336
## [150,] 0.88295480 0.06631692 0.050728283
## [151,] 0.68714805 0.17445075 0.138401202
## [152,] 0.67530875 0.25427579 0.070415456
## [153,] 0.27671062 0.64511544 0.078173941
## [154,] 0.03342278 0.94355550 0.023021718
## [155,] 0.67530875 0.25427579 0.070415456
## [156,] 0.29885026 0.62064746 0.080502276
## [157,] 0.03498640 0.94096347 0.024050135
## [158,] 0.73537195 0.20160005 0.063028002
## [159,] 0.34932045 0.56406786 0.086611692
## [160,] 0.05076516 0.91572210 0.033512739
## [161,] 0.92788184 0.04191198 0.030206180
## [162,] 0.82675930 0.10118928 0.072051424
## [163,] 0.56280085 0.25785253 0.179346612
## [164,] 0.90646920 0.05439376 0.039137047
## [165,] 0.89811160 0.06021279 0.041675608
## [166,] 0.80989224 0.11435802 0.075749735
## [167,] 0.74277373 0.19595384 0.061272427
## [168,] 0.46314343 0.44728307 0.089573493
## [169,] 0.20586049 0.70837862 0.085760889
## [170,] 0.76273634 0.17907573 0.058187924
## [171,] 0.46314343 0.44728307 0.089573493
## [172,] 0.20586049 0.70837862 0.085760889
## [173,] 0.78678498 0.15885265 0.054362370
## [174,] 0.51508445 0.39635517 0.088560377
## [175,] 0.24331118 0.66454618 0.092142636
## [176,] 0.93117686 0.04118087 0.027642270
## [177,] 0.89467258 0.06474382 0.040583591
## [178,] 0.73203446 0.16985822 0.098107317
## [179,] 0.35984985 0.55107286 0.089077297
## [180,] 0.05694271 0.91004617 0.033011113
## [181,] 0.02604343 0.94770327 0.026253303
## [182,] 0.50620507 0.41003445 0.083760483
## [183,] 0.20067502 0.72857751 0.070747466
## [184,] 0.08774874 0.85588170 0.056369561
## [185,] 0.46662716 0.43923868 0.094134168
## [186,] 0.12161639 0.81877990 0.059603710
## [187,] 0.03145339 0.93805637 0.030490245
## [188,] 0.62267756 0.30241983 0.074902611
## [189,] 0.26800816 0.64991197 0.082079873
## [190,] 0.11506363 0.81832544 0.066610926
## [191,] 0.25729860 0.65519787 0.087503538
## [192,] 0.03925695 0.93205797 0.028685077
## [193,] 0.05262614 0.88393007 0.063443794
## [194,] 0.42953540 0.48196148 0.088503114
## [195,] 0.16194039 0.77154318 0.066516434
## [196,] 0.10148497 0.82481177 0.073703262
## [197,] 0.96199025 0.02484488 0.013164873
## [198,] 0.92086221 0.05591276 0.023225030
## [199,] 0.56376481 0.36187205 0.074363137
## [200,] 0.96000235 0.02587818 0.014119470
## [201,] 0.93873077 0.04239277 0.018876461
## [202,] 0.65898090 0.27410265 0.066916452
## [203,] 0.95877903 0.02644031 0.014780658
## [204,] 0.93873077 0.04239277 0.018876461
## [205,] 0.68066573 0.25470636 0.064627911
## [206,] 0.95527903 0.02838458 0.016336387
## [207,] 0.95110922 0.03311515 0.015775625
## [208,] 0.73528998 0.20670400 0.058006021
## [209,] 0.86847541 0.07358852 0.057936066
## [210,] 0.88420321 0.06488646 0.050910329
## [211,] 0.89749327 0.05730511 0.045201614
## [212,] 0.67203651 0.25257773 0.075385759
## [213,] 0.31536071 0.59679143 0.087847862
## [214,] 0.01061430 0.98028000 0.009105697
## [215,] 0.78520102 0.16443051 0.050368469
## [216,] 0.46781001 0.45041272 0.081777268
## [217,] 0.05628704 0.91150909 0.032203870
## [218,] 0.73025342 0.20156639 0.068180188
## [219,] 0.40428548 0.49869612 0.097018407
## [220,] 0.01538202 0.97262441 0.011993562
## [221,] 0.84703634 0.11338909 0.039574569
## [222,] 0.56042151 0.35991494 0.079663557
## [223,] 0.08374466 0.87356887 0.042686472
## [224,] 0.06157192 0.90223643 0.036191645
## [225,] 0.06554540 0.87250582 0.061948780
## [226,] 0.12810953 0.71858955 0.153300928
## [227,] 0.07033940 0.88746543 0.042195175
## [228,] 0.07002829 0.86277626 0.067195450
## [229,] 0.12862240 0.71606728 0.155310319
## [230,] 0.06867437 0.87039667 0.060928954
## [231,] 0.11373663 0.75968907 0.126574300
## [232,] 0.16269604 0.62528452 0.212019445
## [233,] 0.63808777 0.29263987 0.069272359
## [234,] 0.37971771 0.53953781 0.080744485
## [235,] 0.18047713 0.74532641 0.074196463
## [236,] 0.67583494 0.25965994 0.064505120
## [237,] 0.41356922 0.50693154 0.079499238
## [238,] 0.18282047 0.74650220 0.070677331
## [239,] 0.62446653 0.30468500 0.070848471
## [240,] 0.37400469 0.54552892 0.080466390
## [241,] 0.18085562 0.74463560 0.074508780
## [242,] 0.03895473 0.92672972 0.034315551
## [243,] 0.12305070 0.72914697 0.147802334
## [244,] 0.17760962 0.58272664 0.239663747
## [245,] 0.06953764 0.86469328 0.065769080
## [246,] 0.14997093 0.67089917 0.179129898
## [247,] 0.19479467 0.55544635 0.249758974
## [248,] 0.06839056 0.86311887 0.068490570
## [249,] 0.14689909 0.66983738 0.183263538
## [250,] 0.19239318 0.55222099 0.255385824
## [251,] 0.13409973 0.70998308 0.155917193
## [252,] 0.18571224 0.57393281 0.240354943
## [253,] 0.11757798 0.74500007 0.137421945
## [254,] 0.20058910 0.52500484 0.274406060
## [255,] 0.03438351 0.94683288 0.018783613
## [256,] 0.02398811 0.95297492 0.023036969
## [257,] 0.12824149 0.69418181 0.177576695
## [258,] 0.31540913 0.60289301 0.081697856
## [259,] 0.16710144 0.57198907 0.260909489
## [260,] 0.09837800 0.85068611 0.050935886
plot(dt1$Calories, dt1$Total.Fat,
     col = dt1$cluster_fcm,
     pch = 19,
     main = "Fuzzy C-Means Clustering")

Silhouette Score

sil <- silhouette(kmeans_model$cluster, dist(dt_scaled))
mean(sil[, 3])
## [1] 0.4240723

Rata rata tiap cluster

dt1 %>%
  group_by(cluster_kmeans) %>%
  summarise(across(where(is.numeric), mean))
## # A tibble: 3 × 10
##   cluster_kmeans Calories Total.Fat Carbohydrates Protein Sugars Sodium
##            <int>    <dbl>     <dbl>         <dbl>   <dbl>  <dbl>  <dbl>
## 1              1     197.      5.34          31.4    6.37  23.2    169.
## 2              2     512.     14.9           82.9   12.4   73.0    205.
## 3              3     569.     29.6           49.4   26.6    7.81  1306.
## # ℹ 3 more variables: cluster_hier <dbl>, cluster_dbscan <dbl>,
## #   cluster_fcm <dbl>
dt1 %>%
  group_by(cluster_hier) %>%
  summarise(across(where(is.numeric), mean))
## # A tibble: 3 × 10
##   cluster_hier Calories Total.Fat Carbohydrates Protein Sugars Sodium
##          <int>    <dbl>     <dbl>         <dbl>   <dbl>  <dbl>  <dbl>
## 1            1     519.     26.3           46.5   24.3    7.51 1175. 
## 2            2     114.      3.79          16.5    3.80  11.0    89.6
## 3            3     385.      9.77          65.5    9.49  58.3   153. 
## # ℹ 3 more variables: cluster_kmeans <dbl>, cluster_dbscan <dbl>,
## #   cluster_fcm <dbl>
dt1 %>%
  group_by(cluster_dbscan) %>%
  summarise(across(where(is.numeric), mean))
## # A tibble: 2 × 10
##   cluster_dbscan Calories Total.Fat Carbohydrates Protein Sugars Sodium
##            <int>    <dbl>     <dbl>         <dbl>   <dbl>  <dbl>  <dbl>
## 1              0     780.      36.0          87      27.7   39    1135.
## 2              1     330.      12.2          43.7    12.0   28.5   437.
## # ℹ 3 more variables: cluster_kmeans <dbl>, cluster_hier <dbl>,
## #   cluster_fcm <dbl>
dt1 %>%
  group_by(cluster_fcm) %>%
  summarise(across(where(is.numeric), mean))
## # A tibble: 3 × 10
##   cluster_fcm Calories Total.Fat Carbohydrates Protein Sugars Sodium
##         <int>    <dbl>     <dbl>         <dbl>   <dbl>  <dbl>  <dbl>
## 1           1     172.      4.55          27.7    5.68  20.5    153.
## 2           2     468.     13.3           76.2   11.4   66.4    190.
## 3           3     557.     28.8           48.7   26.1    7.77  1275.
## # ℹ 3 more variables: cluster_kmeans <dbl>, cluster_hier <dbl>,
## #   cluster_dbscan <dbl>