library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.3
## Warning: package 'readr' was built under R version 4.5.3
## Warning: package 'forcats' was built under R version 4.5.3
## Warning: package 'lubridate' was built under R version 4.5.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.1
## ── 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(nnet)
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## The following object is masked from 'package:purrr':
##
## some
library(caret)
## Warning: package 'caret' was built under R version 4.5.3
## Loading required package: lattice
##
## Attaching package: 'caret'
##
## The following object is masked from 'package:purrr':
##
## lift
library(MASS)
##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:dplyr':
##
## select
library(biotools)
## Warning: package 'biotools' was built under R version 4.5.3
## ---
## biotools version 4.3
Import Data
data <- read.csv("gym_members_exercise_tracking.csv")
head(data)
## Age Gender Weight..kg. Height..m. Max_BPM Avg_BPM Resting_BPM
## 1 56 Male 88.3 1.71 180 157 60
## 2 46 Female 74.9 1.53 179 151 66
## 3 32 Female 68.1 1.66 167 122 54
## 4 25 Male 53.2 1.70 190 164 56
## 5 38 Male 46.1 1.79 188 158 68
## 6 56 Female 58.0 1.68 168 156 74
## Session_Duration..hours. Calories_Burned Workout_Type Fat_Percentage
## 1 1.69 1313 Yoga 12.6
## 2 1.30 883 HIIT 33.9
## 3 1.11 677 Cardio 33.4
## 4 0.59 532 Strength 28.8
## 5 0.64 556 Strength 29.2
## 6 1.59 1116 HIIT 15.5
## Water_Intake..liters. Workout_Frequency..days.week. Experience_Level BMI
## 1 3.5 4 3 30.20
## 2 2.1 4 2 32.00
## 3 2.3 4 2 24.71
## 4 2.1 3 1 18.41
## 5 2.8 3 1 14.39
## 6 2.7 5 3 20.55
names(data)
## [1] "Age" "Gender"
## [3] "Weight..kg." "Height..m."
## [5] "Max_BPM" "Avg_BPM"
## [7] "Resting_BPM" "Session_Duration..hours."
## [9] "Calories_Burned" "Workout_Type"
## [11] "Fat_Percentage" "Water_Intake..liters."
## [13] "Workout_Frequency..days.week." "Experience_Level"
## [15] "BMI"
Rename
names(data) <- c("Age","Gender","Weight","Height","Max_BPM","Avg_BPM","Resting_BPM","Session_Duration","Calories_Burned","Workout_Type","Fat_Percentage","Water_Intake","Workout_Frequency","Experience_Level","BMI")
str(data)
## 'data.frame': 973 obs. of 15 variables:
## $ Age : int 56 46 32 25 38 56 36 40 28 28 ...
## $ Gender : chr "Male" "Female" "Female" "Male" ...
## $ Weight : num 88.3 74.9 68.1 53.2 46.1 ...
## $ Height : num 1.71 1.53 1.66 1.7 1.79 1.68 1.72 1.51 1.94 1.84 ...
## $ Max_BPM : int 180 179 167 190 188 168 174 189 185 169 ...
## $ Avg_BPM : int 157 151 122 164 158 156 169 141 127 136 ...
## $ Resting_BPM : int 60 66 54 56 68 74 73 64 52 64 ...
## $ Session_Duration : num 1.69 1.3 1.11 0.59 0.64 1.59 1.49 1.27 1.03 1.08 ...
## $ Calories_Burned : num 1313 883 677 532 556 ...
## $ Workout_Type : chr "Yoga" "HIIT" "Cardio" "Strength" ...
## $ Fat_Percentage : num 12.6 33.9 33.4 28.8 29.2 15.5 21.3 30.6 28.9 29.7 ...
## $ Water_Intake : num 3.5 2.1 2.3 2.1 2.8 2.7 2.3 1.9 2.6 2.7 ...
## $ Workout_Frequency: int 4 4 4 3 3 5 3 3 4 3 ...
## $ Experience_Level : int 3 2 2 1 1 3 2 2 2 1 ...
## $ BMI : num 30.2 32 24.7 18.4 14.4 ...
summary(data)
## Age Gender Weight Height
## Min. :18.00 Length:973 Min. : 40.00 Min. :1.500
## 1st Qu.:28.00 Class :character 1st Qu.: 58.10 1st Qu.:1.620
## Median :40.00 Mode :character Median : 70.00 Median :1.710
## Mean :38.68 Mean : 73.85 Mean :1.723
## 3rd Qu.:49.00 3rd Qu.: 86.00 3rd Qu.:1.800
## Max. :59.00 Max. :129.90 Max. :2.000
## Max_BPM Avg_BPM Resting_BPM Session_Duration
## Min. :160.0 Min. :120.0 Min. :50.00 Min. :0.500
## 1st Qu.:170.0 1st Qu.:131.0 1st Qu.:56.00 1st Qu.:1.040
## Median :180.0 Median :143.0 Median :62.00 Median :1.260
## Mean :179.9 Mean :143.8 Mean :62.22 Mean :1.256
## 3rd Qu.:190.0 3rd Qu.:156.0 3rd Qu.:68.00 3rd Qu.:1.460
## Max. :199.0 Max. :169.0 Max. :74.00 Max. :2.000
## Calories_Burned Workout_Type Fat_Percentage Water_Intake
## Min. : 303.0 Length:973 Min. :10.00 Min. :1.500
## 1st Qu.: 720.0 Class :character 1st Qu.:21.30 1st Qu.:2.200
## Median : 893.0 Mode :character Median :26.20 Median :2.600
## Mean : 905.4 Mean :24.98 Mean :2.627
## 3rd Qu.:1076.0 3rd Qu.:29.30 3rd Qu.:3.100
## Max. :1783.0 Max. :35.00 Max. :3.700
## Workout_Frequency Experience_Level BMI
## Min. :2.000 Min. :1.00 Min. :12.32
## 1st Qu.:3.000 1st Qu.:1.00 1st Qu.:20.11
## Median :3.000 Median :2.00 Median :24.16
## Mean :3.322 Mean :1.81 Mean :24.91
## 3rd Qu.:4.000 3rd Qu.:2.00 3rd Qu.:28.56
## Max. :5.000 Max. :3.00 Max. :49.84
Preprocessing
data$Workout_Type <- as.factor(data$Workout_Type)
data$Gender <- as.factor(data$Gender)
colSums(is.na(data))
## Age Gender Weight Height
## 0 0 0 0
## Max_BPM Avg_BPM Resting_BPM Session_Duration
## 0 0 0 0
## Calories_Burned Workout_Type Fat_Percentage Water_Intake
## 0 0 0 0
## Workout_Frequency Experience_Level BMI
## 0 0 0
deteksi Outlier
num_vars <- c("Age","Weight","Height","Max_BPM","Avg_BPM","Resting_BPM","Session_Duration","Calories_Burned","Fat_Percentage","Water_Intake","Workout_Frequency")
z_scores <- scale(data[num_vars])
colSums(abs(z_scores)>3)
## Age Weight Height Max_BPM
## 0 0 0 0
## Avg_BPM Resting_BPM Session_Duration Calories_Burned
## 0 0 0 3
## Fat_Percentage Water_Intake Workout_Frequency
## 0 0 0
outlier_rows <- which(
apply(abs(z_scores)>3,1,any)
)
length(outlier_rows)
## [1] 3
Analisis Deskriptif
summary(data)
## Age Gender Weight Height Max_BPM
## Min. :18.00 Female:462 Min. : 40.00 Min. :1.500 Min. :160.0
## 1st Qu.:28.00 Male :511 1st Qu.: 58.10 1st Qu.:1.620 1st Qu.:170.0
## Median :40.00 Median : 70.00 Median :1.710 Median :180.0
## Mean :38.68 Mean : 73.85 Mean :1.723 Mean :179.9
## 3rd Qu.:49.00 3rd Qu.: 86.00 3rd Qu.:1.800 3rd Qu.:190.0
## Max. :59.00 Max. :129.90 Max. :2.000 Max. :199.0
## Avg_BPM Resting_BPM Session_Duration Calories_Burned
## Min. :120.0 Min. :50.00 Min. :0.500 Min. : 303.0
## 1st Qu.:131.0 1st Qu.:56.00 1st Qu.:1.040 1st Qu.: 720.0
## Median :143.0 Median :62.00 Median :1.260 Median : 893.0
## Mean :143.8 Mean :62.22 Mean :1.256 Mean : 905.4
## 3rd Qu.:156.0 3rd Qu.:68.00 3rd Qu.:1.460 3rd Qu.:1076.0
## Max. :169.0 Max. :74.00 Max. :2.000 Max. :1783.0
## Workout_Type Fat_Percentage Water_Intake Workout_Frequency
## Cardio :255 Min. :10.00 Min. :1.500 Min. :2.000
## HIIT :221 1st Qu.:21.30 1st Qu.:2.200 1st Qu.:3.000
## Strength:258 Median :26.20 Median :2.600 Median :3.000
## Yoga :239 Mean :24.98 Mean :2.627 Mean :3.322
## 3rd Qu.:29.30 3rd Qu.:3.100 3rd Qu.:4.000
## Max. :35.00 Max. :3.700 Max. :5.000
## Experience_Level BMI
## Min. :1.00 Min. :12.32
## 1st Qu.:1.00 1st Qu.:20.11
## Median :2.00 Median :24.16
## Mean :1.81 Mean :24.91
## 3rd Qu.:2.00 3rd Qu.:28.56
## Max. :3.00 Max. :49.84
hist(data$Calories_Burned)

boxplot(Calories_Burned ~ Workout_Type, data = data)

hist(data$Avg_BPM)

hist(data$Session_Duration)

cor_matrix <- cor(data[num_vars])
heatmap(cor_matrix)

Split data
set.seed(123)
train_index <- createDataPartition(data$Workout_Type,p=0.8,list=FALSE)
train <- data[train_index,]
test <- data[-train_index,]
Standarisasi
train_scaled <- train
test_scaled <- test
train_means <- sapply(train[num_vars],mean)
train_sds <- sapply(train[num_vars],sd)
train_scaled[num_vars] <-scale(train[num_vars],center=train_means,scale=train_sds)
test_scaled[num_vars] <-scale(test[num_vars],center=train_means,scale=train_sds)
Uji Asumsi Multinomial
model_vif <- lm(Age ~ Weight + Height + Max_BPM +Avg_BPM + Resting_BPM +Session_Duration + Calories_Burned +Fat_Percentage + Water_Intake + Workout_Frequency,data=train)
vif(model_vif)
## Weight Height Max_BPM Avg_BPM
## 1.332505 1.342852 1.012276 3.169694
## Resting_BPM Session_Duration Calories_Burned Fat_Percentage
## 1.015124 16.742279 19.206247 2.400171
## Water_Intake Workout_Frequency
## 1.882849 1.866917
Multinomial Logistic Regression
model_multi <- multinom(Workout_Type ~ Age + Weight + Height +Max_BPM + Avg_BPM + Resting_BPM +Session_Duration + Calories_Burned +Fat_Percentage + Water_Intake +Workout_Frequency + Gender,data=train)
## # weights: 56 (39 variable)
## initial value 1081.309602
## iter 10 value 1070.711369
## iter 20 value 1069.409686
## iter 30 value 1063.102318
## iter 40 value 1061.627454
## final value 1061.621852
## converged
summary(model_multi)
## Call:
## multinom(formula = Workout_Type ~ Age + Weight + Height + Max_BPM +
## Avg_BPM + Resting_BPM + Session_Duration + Calories_Burned +
## Fat_Percentage + Water_Intake + Workout_Frequency + Gender,
## data = train)
##
## Coefficients:
## (Intercept) Age Weight Height Max_BPM
## HIIT 1.6329842 0.008829650 -0.002370679 -0.4509414 -0.006203904
## Strength 0.1743882 -0.006591111 -0.013361386 -0.8304537 -0.011112178
## Yoga -1.7479268 -0.004844702 -0.009010846 0.1798826 -0.002616688
## Avg_BPM Resting_BPM Session_Duration Calories_Burned
## HIIT -0.002751422 0.011469997 0.6308238 0.0001097375
## Strength 0.020234015 0.003946077 2.2266303 -0.0022571781
## Yoga 0.024419166 -0.005001967 3.4997645 -0.0042727771
## Fat_Percentage Water_Intake Workout_Frequency GenderMale
## HIIT -0.02235421 -0.2845721 -0.02716991 0.2897216
## Strength 0.01998058 -0.3604484 0.15101993 1.0392657
## Yoga -0.02282657 -0.4263461 0.04125713 1.0180489
##
## Std. Errors:
## (Intercept) Age Weight Height Max_BPM Avg_BPM
## HIIT 0.09667027 0.009008798 0.006036941 0.4206555 0.007146833 0.007777322
## Strength 0.09647849 0.008623840 0.005803335 0.4156300 0.006913683 0.007318757
## Yoga 0.09581656 0.008767705 0.005823035 0.4171416 0.006988960 0.007443703
## Resting_BPM Session_Duration Calories_Burned Fat_Percentage
## HIIT 0.01367209 0.1506319 0.0006427593 0.02372661
## Strength 0.01313118 0.1482368 0.0006157324 0.02285938
## Yoga 0.01338227 0.1468112 0.0006279344 0.02333059
## Water_Intake Workout_Frequency GenderMale
## HIIT 0.2584508 0.1488706 0.3322241
## Strength 0.2467884 0.1437047 0.3140044
## Yoga 0.2507396 0.1463441 0.3182626
##
## Residual Deviance: 2123.244
## AIC: 2201.244
Uji Parsial (Wald)
z <- summary(model_multi)$coefficients /
summary(model_multi)$standard.errors
p_value <-(1-pnorm(abs(z)))*2
p_value
## (Intercept) Age Weight Height Max_BPM Avg_BPM
## HIIT 0.00000000 0.3270298 0.69454445 0.28372139 0.3853597 0.723507574
## Strength 0.07067905 0.4446947 0.02131469 0.04571018 0.1079944 0.005697880
## Yoga 0.00000000 0.5805633 0.12175513 0.66630359 0.7081044 0.001036184
## Resting_BPM Session_Duration Calories_Burned Fat_Percentage
## HIIT 0.4015056 2.816109e-05 8.644370e-01 0.3461118
## Strength 0.7637866 0.000000e+00 2.465252e-04 0.3820829
## Yoga 0.7085713 0.000000e+00 1.014033e-11 0.3278782
## Water_Intake Workout_Frequency GenderMale
## HIIT 0.2708668 0.8551850 0.383171955
## Strength 0.1441371 0.2933024 0.000933902
## Yoga 0.0890644 0.7780059 0.001380150
Uji Serentak
model_null <- multinom(Workout_Type~1,data=train)
## # weights: 8 (3 variable)
## initial value 1081.309602
## final value 1079.862374
## converged
anova(model_null,model_multi,test="Chisq")
## Likelihood ratio tests of Multinomial Models
##
## Response: Workout_Type
## Model
## 1 1
## 2 Age + Weight + Height + Max_BPM + Avg_BPM + Resting_BPM + Session_Duration + Calories_Burned + Fat_Percentage + Water_Intake + Workout_Frequency + Gender
## Resid. df Resid. Dev Test Df LR stat. Pr(Chi)
## 1 2337 2159.725
## 2 2301 2123.244 1 vs 2 36 36.48105 0.4462963
Odds Ratio
exp(coef(model_multi))
## (Intercept) Age Weight Height Max_BPM Avg_BPM
## HIIT 5.1191283 1.0088687 0.9976321 0.6370282 0.9938153 0.9972524
## Strength 1.1905176 0.9934306 0.9867275 0.4358515 0.9889493 1.0204401
## Yoga 0.1741346 0.9951670 0.9910296 1.1970768 0.9973867 1.0247198
## Resting_BPM Session_Duration Calories_Burned Fat_Percentage
## HIIT 1.0115360 1.879158 1.0001097 0.9778938
## Strength 1.0039539 9.268581 0.9977454 1.0201815
## Yoga 0.9950105 33.107654 0.9957363 0.9774320
## Water_Intake Workout_Frequency GenderMale
## HIIT 0.7523361 0.9731959 1.336055
## Strength 0.6973635 1.1630198 2.827140
## Yoga 0.6528903 1.0421200 2.767789
Prediksi & Evaluasi Multinomial
pred_multi <- predict(model_multi,newdata=test)
confusionMatrix(pred_multi,test$Workout_Type)
## Confusion Matrix and Statistics
##
## Reference
## Prediction Cardio HIIT Strength Yoga
## Cardio 16 19 19 21
## HIIT 10 4 8 6
## Strength 17 12 15 11
## Yoga 8 9 9 9
##
## Overall Statistics
##
## Accuracy : 0.228
## 95% CI : (0.1708, 0.2937)
## No Information Rate : 0.2642
## P-Value [Acc > NIR] : 0.8910
##
## Kappa : -0.0366
##
## Mcnemar's Test P-Value : 0.1114
##
## Statistics by Class:
##
## Class: Cardio Class: HIIT Class: Strength Class: Yoga
## Sensitivity 0.3137 0.09091 0.29412 0.19149
## Specificity 0.5845 0.83893 0.71831 0.82192
## Pos Pred Value 0.2133 0.14286 0.27273 0.25714
## Neg Pred Value 0.7034 0.75758 0.73913 0.75949
## Prevalence 0.2642 0.22798 0.26425 0.24352
## Detection Rate 0.0829 0.02073 0.07772 0.04663
## Detection Prevalence 0.3886 0.14508 0.28497 0.18135
## Balanced Accuracy 0.4491 0.46492 0.50621 0.50670
acc_multi <-mean(pred_multi==test$Workout_Type)
acc_multi
## [1] 0.2279793
Uji Asumsi LDA
Normalitas visual
qqnorm(train_scaled$Calories_Burned)
qqline(train_scaled$Calories_Burned)

Homogenitas kovarians
boxM(train_scaled[num_vars],train_scaled$Workout_Type)
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: train_scaled[num_vars]
## Chi-Sq (approx.) = 200.34, df = 198, p-value = 0.4402
Korelasi
cor(train_scaled[num_vars])
## Age Weight Height Max_BPM
## Age 1.000000000 -0.039701705 -0.021562878 -0.02565244
## Weight -0.039701705 1.000000000 0.352037009 0.04740481
## Height -0.021562878 0.352037009 1.000000000 -0.02124188
## Max_BPM -0.025652441 0.047404806 -0.021241877 1.00000000
## Avg_BPM 0.003856346 0.014622634 -0.004998731 -0.03033613
## Resting_BPM -0.026773212 -0.042076030 -0.002357584 0.02166654
## Session_Duration -0.021736295 -0.002620743 -0.009906399 0.03307844
## Calories_Burned -0.167645021 0.108055508 0.089709082 0.03067578
## Fat_Percentage 0.002653242 -0.223024585 -0.257008790 -0.03369801
## Water_Intake 0.045310132 0.382273698 0.401344643 0.05234815
## Workout_Frequency 0.005573690 -0.018154550 -0.001422962 -0.01878913
## Avg_BPM Resting_BPM Session_Duration Calories_Burned
## Age 0.003856346 -0.0267732123 -0.021736295 -0.16764502
## Weight 0.014622634 -0.0420760300 -0.002620743 0.10805551
## Height -0.004998731 -0.0023575842 -0.009906399 0.08970908
## Max_BPM -0.030336130 0.0216665367 0.033078437 0.03067578
## Avg_BPM 1.000000000 0.0735288060 0.003089358 0.34031031
## Resting_BPM 0.073528806 1.0000000000 -0.010142081 0.03014362
## Session_Duration 0.003089358 -0.0101420811 1.000000000 0.90229535
## Calories_Burned 0.340310309 0.0301436217 0.902295350 1.00000000
## Fat_Percentage 0.005303530 0.0007151486 -0.581315552 -0.59517791
## Water_Intake 0.006553855 -0.0076356748 0.277574519 0.35840395
## Workout_Frequency -0.017636885 -0.0285804362 0.647596146 0.57466298
## Fat_Percentage Water_Intake Workout_Frequency
## Age 0.0026532424 0.045310132 0.005573690
## Weight -0.2230245847 0.382273698 -0.018154550
## Height -0.2570087897 0.401344643 -0.001422962
## Max_BPM -0.0336980136 0.052348153 -0.018789128
## Avg_BPM 0.0053035304 0.006553855 -0.017636885
## Resting_BPM 0.0007151486 -0.007635675 -0.028580436
## Session_Duration -0.5813155524 0.277574519 0.647596146
## Calories_Burned -0.5951779123 0.358403951 0.574662977
## Fat_Percentage 1.0000000000 -0.592357844 -0.522684880
## Water_Intake -0.5923578440 1.000000000 0.213628638
## Workout_Frequency -0.5226848802 0.213628638 1.000000000
LDA
model_lda <- lda(Workout_Type ~ Age + Weight + Height +Max_BPM + Avg_BPM + Resting_BPM +Session_Duration + Calories_Burned +Fat_Percentage + Water_Intake +Workout_Frequency + Gender,data=train_scaled)
model_lda
## Call:
## lda(Workout_Type ~ Age + Weight + Height + Max_BPM + Avg_BPM +
## Resting_BPM + Session_Duration + Calories_Burned + Fat_Percentage +
## Water_Intake + Workout_Frequency + Gender, data = train_scaled)
##
## Prior probabilities of groups:
## Cardio HIIT Strength Yoga
## 0.2615385 0.2269231 0.2653846 0.2461538
##
## Group means:
## Age Weight Height Max_BPM Avg_BPM
## Cardio -0.05465320 0.080694961 0.01161909 0.0644646092 -0.01825354
## HIIT 0.03212576 0.048390769 -0.01159818 -0.0001621824 -0.02404169
## Strength -0.03039964 -0.119582108 -0.07116589 -0.0818628975 0.08309933
## Yoga 0.06122770 -0.001424176 0.07507251 0.0199143011 -0.04803364
## Resting_BPM Session_Duration Calories_Burned Fat_Percentage
## Cardio -0.01579653 -0.144164615 -0.122283065 0.09612008
## HIIT 0.06373055 0.113822942 0.101398017 -0.10924266
## Strength 0.01817494 0.006778346 0.027180247 0.08445025
## Yoga -0.06156264 0.040936473 0.007145756 -0.09246744
## Water_Intake Workout_Frequency GenderMale
## Cardio 0.006095365 -0.11500553 0.5098039
## HIIT 0.040221959 0.05700456 0.5254237
## Strength -0.073869195 0.03035714 0.5072464
## Yoga 0.036084281 0.03691350 0.5625000
##
## Coefficients of linear discriminants:
## LD1 LD2 LD3
## Age -0.23037526 -0.25313369 -0.544533005
## Weight -0.68842443 -0.23206792 -0.222748836
## Height -0.15238719 -0.23409672 0.356491713
## Max_BPM -0.24804755 -0.16117475 0.261347916
## Avg_BPM 0.89632054 0.04846051 1.086743487
## Resting_BPM -0.01141986 0.01661187 -0.458789690
## Session_Duration 2.47694450 -1.01405384 2.577867559
## Calories_Burned -2.21716850 0.90118081 -3.506118891
## Fat_Percentage 0.14403384 0.91443359 0.029048334
## Water_Intake -0.62359176 0.28235807 -0.006867517
## Workout_Frequency 0.30093586 0.30919626 0.117787677
## GenderMale 2.84921846 0.02168909 1.462293389
##
## Proportion of trace:
## LD1 LD2 LD3
## 0.5044 0.3153 0.1802
lda_values <- predict(model_lda)
plot(
lda_values$x[,1],
lda_values$x[,2],
col=as.numeric(train_scaled$Workout_Type),
pch=19,
xlab="LD1",
ylab="LD2"
)
legend(
"topright",
legend=levels(train_scaled$Workout_Type),
col=1:length(levels(train_scaled$Workout_Type)),
pch=19
)

prediksi LDA
pred_lda <- predict(model_lda,newdata=test_scaled)
Evaluasi LDA
confusionMatrix(
pred_lda$class,
test_scaled$Workout_Type
)
## Confusion Matrix and Statistics
##
## Reference
## Prediction Cardio HIIT Strength Yoga
## Cardio 16 19 19 21
## HIIT 10 4 8 6
## Strength 17 11 15 11
## Yoga 8 10 9 9
##
## Overall Statistics
##
## Accuracy : 0.228
## 95% CI : (0.1708, 0.2937)
## No Information Rate : 0.2642
## P-Value [Acc > NIR] : 0.8910
##
## Kappa : -0.0364
##
## Mcnemar's Test P-Value : 0.1086
##
## Statistics by Class:
##
## Class: Cardio Class: HIIT Class: Strength Class: Yoga
## Sensitivity 0.3137 0.09091 0.29412 0.19149
## Specificity 0.5845 0.83893 0.72535 0.81507
## Pos Pred Value 0.2133 0.14286 0.27778 0.25000
## Neg Pred Value 0.7034 0.75758 0.74101 0.75796
## Prevalence 0.2642 0.22798 0.26425 0.24352
## Detection Rate 0.0829 0.02073 0.07772 0.04663
## Detection Prevalence 0.3886 0.14508 0.27979 0.18653
## Balanced Accuracy 0.4491 0.46492 0.50973 0.50328
acc_lda <-
mean(
pred_lda$class==
test_scaled$Workout_Type
)
acc_lda
## [1] 0.2279793
perbandingan
acc_multi
## [1] 0.2279793
acc_lda
## [1] 0.2279793