Introduction to Data Science Final Exam
Analisis Deskriptive
Anggota Kelompok
Statistika Bisnis 2021
1. Calvin Riswandi
2. Sausan Ramadhani
3. Ferdinand Nathaniel Widjaya
Import Data
# Load raw data
hptrain <- read.csv("train.csv", header = TRUE)
hptrainhptest <- read.csv("test.csv", header = TRUE)
hptestBuat Dataframe tanpa ID Di Test Set dan tanpa Price Range di Trainset untuk keperluan analisis menghitung penjualan dan stok saja.
hptrain2 <- subset(hptrain, select = -c(price_range))
hptest2 <- subset(hptest, select = -c(id))# Buat Data Frame gabungan
colnames(hptrain2) = colnames(hptest2)
hpjoin <- rbind(hptrain2, hptest2)
hpjoinAssess Data Quantity and Type
# use str to explore train and test
str(hpjoin)## 'data.frame': 3000 obs. of 20 variables:
## $ battery_power: int 842 1021 563 615 1821 1859 1821 1954 1445 509 ...
## $ blue : int 0 1 1 1 1 0 0 0 1 1 ...
## $ clock_speed : num 2.2 0.5 0.5 2.5 1.2 0.5 1.7 0.5 0.5 0.6 ...
## $ dual_sim : int 0 1 1 0 0 1 0 1 0 1 ...
## $ fc : int 1 0 2 0 13 3 4 0 0 2 ...
## $ four_g : int 0 1 1 0 1 0 1 0 0 1 ...
## $ int_memory : int 7 53 41 10 44 22 10 24 53 9 ...
## $ m_dep : num 0.6 0.7 0.9 0.8 0.6 0.7 0.8 0.8 0.7 0.1 ...
## $ mobile_wt : int 188 136 145 131 141 164 139 187 174 93 ...
## $ n_cores : int 2 3 5 6 2 1 8 4 7 5 ...
## $ pc : int 2 6 6 9 14 7 10 0 14 15 ...
## $ px_height : int 20 905 1263 1216 1208 1004 381 512 386 1137 ...
## $ px_width : int 756 1988 1716 1786 1212 1654 1018 1149 836 1224 ...
## $ ram : int 2549 2631 2603 2769 1411 1067 3220 700 1099 513 ...
## $ sc_h : int 9 17 11 16 8 17 13 16 17 19 ...
## $ sc_w : int 7 3 2 8 2 1 8 3 1 10 ...
## $ talk_time : int 19 7 9 11 15 10 18 5 20 12 ...
## $ three_g : int 0 1 1 1 1 1 1 1 1 1 ...
## $ touch_screen : int 0 1 1 0 1 0 0 1 0 0 ...
## $ wifi : int 1 0 0 0 0 0 1 1 0 0 ...
Jadi kita sekarang punya Train Data, Test Data, dan Whole Data dengan 21 Variabel dan total 3000 Row.
1. Lakukan Analisis Deskriptive untuk mendapatkan beberapa informasi penting dari data tersebut!
Melihat Jumlah Penjualan HP 4G dan non 4G
library(ggplot2)
empatg = data.frame(table(hpjoin$four_g))
barplot(empatg$Freq,
main = "HP Sold by 4G Support",
xlab = "Support 4G?",
ylab = "Total",
names.arg = c("Yes", "No"),
col = "darkred",
horiz = F) Jumlah Penjualan Hampir Setara, Namun HP 4G yang terjual sedikit lebih banyak.
Touchscreen Mobile Sold
table(hpjoin$touch_screen)##
## 0 1
## 1494 1506
barplot(table(hpjoin$touch_screen),
main = "Penjualan HP Grouped by Touchscreen",
xlab = "Touchscreen?",
ylab = "Total",
names.arg = c("Yes", "No"),
col = "darkred",
horiz = F)Jumlah HP Yang Terjual baik Touchscreen dan Tidak Touchscreen juga hampir sama nilainya dengan HP yang support 4G Apakah Setiap HP yang Touchscreen sudah Pasti 4G? Nanti akan kita lihat hubungannya di yang harusnya di Point Selanjutnya
Hubungan 4G Dan Touchscreen
library (ggplot2)
library(dplyr)
library(scales)
plotdata = hpjoin%>%
group_by(four_g, touch_screen) %>%
dplyr::summarize (n= n()) %>%
mutate(pct = n/sum(n),
lbl = scales::percent(pct))
ggplot(plotdata, aes(x=factor(four_g),
y=pct,
fill = factor(touch_screen)))+
geom_bar(stat="identity", position="fill")+
scale_y_continuous(breaks = seq(0,1,0.2), label = percent)+
geom_text(aes(label=lbl), size= 3, position = position_stack(vjust = 0.5)) +
scale_fill_brewer (palette="Set2")+
theme_minimal()+
labs(y='Percentage', fill = "Touch Screen (0=No, 1=Yes)",
x= "4G Support", title = "Apakah Semua HP 4G Touchscreen?")+
theme_minimal()Tidak Semua HP 4G adalah Touchscreen dan Sebaliknya, tidak semua HP Touchscreen adalah 4G.
Jumlah HP Sold berdasarkan Ukuran Memory Internal
hist(hpjoin$int_memory ,main = "Penjualan HP Berdasarkan Memory Internal", xlab = "Internal Memory Size",col = "olivedrab3",border = "red",
breaks = 5)Dari Histogram, Bisa dilihat HP Dengan Storage Dibawah 60GB cenderung sangat dilaku dibanding diatas 60GB apakah ada alasan tertentu? Mungkin Harga yang terlalu mahal atau lainnya?.
Penjualan HP Dikelompokkan ukuran RAM
hist(hpjoin$ram , main = "Penjualan HP Berdasarkan RAM " , xlab = "RAM Size",col = "olivedrab3",border = "red",
breaks = 10)HP Yang Laku kebanyakan memiliki Ram diatas 500MB.
2. Buatlah Model Data Science yang sudah kalian pelajari untuk mengetahui beberapa hubungan antara fitur ponsel (misalnya: - RAM, Memori Internal dll) dan harga jualnya!
Correlation Matrix
library(kableExtra)
corr <- round(cor(hptrain), 1)
lower <- round(corr,2)
lower[lower.tri(corr, diag=TRUE)]<-""
lower <- as.data.frame(lower)
knitr::kable(lower, booktabs = TRUE,
caption = 'Coorelations among attributes') %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive", font_size = 8))| battery_power | blue | clock_speed | dual_sim | fc | four_g | int_memory | m_dep | mobile_wt | n_cores | pc | px_height | px_width | ram | sc_h | sc_w | talk_time | three_g | touch_screen | wifi | price_range | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| battery_power | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.1 | 0 | 0 | 0 | 0.2 | |
| blue | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| clock_speed | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| dual_sim | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| fc | 0 | 0 | 0 | 0 | 0 | 0.6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| four_g | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.6 | 0 | 0 | 0 | ||||||
| int_memory | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||
| m_dep | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||
| mobile_wt | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||
| n_cores | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||
| pc | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||
| px_height | 0.5 | 0 | 0.1 | 0 | 0 | 0 | 0 | 0.1 | 0.1 | ||||||||||||
| px_width | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.2 | |||||||||||||
| ram | 0 | 0 | 0 | 0 | 0 | 0 | 0.9 | ||||||||||||||
| sc_h | 0.5 | 0 | 0 | 0 | 0 | 0 | |||||||||||||||
| sc_w | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||
| talk_time | 0 | 0 | 0 | 0 | |||||||||||||||||
| three_g | 0 | 0 | 0 | ||||||||||||||||||
| touch_screen | 0 | 0 | |||||||||||||||||||
| wifi | 0 | ||||||||||||||||||||
| price_range |
Dari Matrix Correlation antar Predictor Di Atas, bisa dilihat beberapa predictor tidak mempengaruhi atau pengaruhnya lemah satu sama lain, tapi ada juga beberapa predictor yang memiliki relasi dan pengaruh yang kuat satu sama lain. Dalam Correlation Matrix Nilai lebih dari 0.5 dinyatakan memiliki hubungan kuat. Contohnya : Pixel Height dan Pixel Weight, 3G&4G, RAM dan Harga Handphone
Itu bisa berpengaruh untuk membuat model klasifikasi atau Regresi jika dibutuhkan.
Hubungan Px_width dan Pixel_Height
library(ggplot2)
library(scales)
ggplot(hptrain, aes(x=px_width, y = px_height))+
geom_point(color = "blue", size = 2, alpha = .8) +
scale_y_continuous (limits = c(0, 2500)) +
scale_x_continuous (breaks = seq(0,2250,250),
limits=c(0,2500))+
theme_minimal() +
labs (x = "Pixel Width",
y = "Pixel Length",
title = 'APakah Pixel Width dan Pixel Length berhubungan?',
subtitle = "berdasarkan data penjualan trainset")Hubungan antara Pixel Width dan Pixel Height sangat berhubungan erat, semakin lebar pixelnya semakin panjang juga pixelnya karena pengaruh dari ukuran layar HP
Scatter Plot Ram HP dan Price Range HP
library(ggplot2)
library(scales)
ggplot(hptrain, aes(x=ram, y = price_range))+
geom_point(color = "aquamarine2", size = 2, alpha = .8) +
scale_y_continuous (limits = c(0, 4)) +
scale_x_continuous (breaks = seq(0,4000,250),
limits=c(0,4000))+
theme_minimal() +
labs (x = "RAM (MB)",
y = "Price range",
title = 'APakah RAM mempengaruhi harga HP',
subtitle = "berdasarkan data penjualan trainset")Sesuai nilai correlationnya, RAM HP dan Price range HP memiliki pengaruh yang sangat kuat satu sama lain. semakin murah HP nya semakin kecil pula RAM yang didapatkan.
3G Dan 4G
library (ggplot2)
library(dplyr)
library(scales)
plotdata2 = hpjoin%>%
group_by(four_g, three_g) %>%
dplyr::summarize (n= n()) %>%
mutate(pct = n/sum(n),
lbl = scales::percent(pct))
ggplot(plotdata2, aes(x=factor(four_g),
y=pct,
fill = factor(three_g)))+
geom_bar(stat="identity", position="fill")+
scale_y_continuous(breaks = seq(0,1,0.2), label = percent)+
geom_text(aes(label=lbl), size= 3, position = position_stack(vjust = 0.5)) +
scale_fill_brewer (palette="Set3")+
theme_minimal()+
labs(y='Percentage', fill = "3G Support (0=No, 1=Yes)",
x= "4G Support", title = "Apakah Semua HP 4G Support 3G?")+
theme_minimal()Kita tahu bahwa 100% dari HP yang sudah mensupport 4G sudah pasti mensupport 3G juga. Jadi jika ingin menjual HP 4G, kita sudah tahu bahwa pasti HP Tersebut juga bisa 3G
Battery Power dan Price Range
Di 2 Grafik sebelumnya merupakan variabel yang memiliki correlation kuat, di poin ini kita akan mencoba dengan yang memiliki correlation lemah.
library(ggplot2)
library(scales)
ggplot(hptrain, aes(x=battery_power, y = price_range))+
geom_point(color = "red", size = 2, alpha = .8) +
scale_y_continuous (limits = c(0, 4)) +
scale_x_continuous (breaks = seq(250,2500,250),
limits=c(0,2500))+
theme_minimal() +
labs (x = "Battery Power (mAH)",
y = "Price range",
title = 'APakah battery power mempengaruhi harga HP',
subtitle = "berdasarkan data penjualan trainset")terlihat ukuran baterai saja tidak cukup kuat menjadi pembeda range harga hp, mungkin perlu ditambah prediktor yang lainny.
3. Buatlah perbandingan prediksi harga ponsel menggunakan Regression, Decision Tree, dan Random Forest!
Proportion Price Range
Kita akan melihat proporsi data price range di hptrain secara keseluruhan
prop.table(table(as.factor(hptrain$price_range), dnn="Price Range Proportions"))## Price Range Proportions
## 0 1 2 3
## 0.25 0.25 0.25 0.25
Disini kita melihat bahwa proporsinya rata masing-masing 25% sehingga hasil prediksi bisa lebih akurat tidak contong ke mayoritas (Underfit).
Tes Prediksi Price Range HP Menggunakan KNN Dan RAM sebagai Predictor
small_ram <- slice_sample(hptrain, n = 150)
nearest_neighbors <- small_ram |>
mutate(diff = abs(2000 - ram)) |>
arrange(diff) |>
slice(1:5) #subset the first 5 rows
prediction <- nearest_neighbors |>
summarise(predicted = median(price_range))
predictionMenggunakan RAM sebagai Predictor Price range HP, memprediksi kira2 jika kita akan membeli hp rengan RAM 2000 MB maka HP Tersebut akan ada di Price Range Kategori 1, karena hubungan yang sangat kuat antar kedua variabel, bisa dinyatakan kira-kira 90% tebakan mesin benar
Nilai akurasi Model Prediksi Decision Tree menggunakan 2 Predictor
library(rpart)
set.seed(1234)
hptrain <- hptrain |>
mutate(price_range = as.factor(price_range))
models <- rpart(price_range ~ ram + battery_power, data = hptrain, method="class")library(caret)
options(digits=4)
Predict_models_train <- predict(models, hptrain, type = "class")
#build a confusion matrix to make comparison
conMat <- confusionMatrix(as.factor(Predict_models_train), as.factor(hptrain$price_range))
#show confusion matrix
conMat$table## Reference
## Prediction 0 1 2 3
## 0 477 70 0 0
## 1 23 339 50 0
## 2 0 91 362 68
## 3 0 0 88 432
conMat$overall["Accuracy"]## Accuracy
## 0.805
Menggunakan Decision Tree dengan 2 variabel yaitu RAM Dan Ukuran Baterai kita mendapatkan nilai akurasi prediksi kelas harga sekitar 80%. Jika kita mengurangi variabel Battery yang lemah pengaruhnya, apakah nilai akurasi meningkat?
Decision Tree Single Predictor
modelx <- rpart(price_range ~ ram , data = hptrain, method="class")
library(caret)
options(digits=4)
Predict2_models_train <- predict(modelx, hptrain, type = "class")
#build a confusion matrix to make comparison
conMat2 <- confusionMatrix(as.factor(Predict2_models_train), as.factor(hptrain$price_range))
#show confusion matrix
conMat2$table## Reference
## Prediction 0 1 2 3
## 0 402 49 0 0
## 1 98 389 107 0
## 2 0 62 305 68
## 3 0 0 88 432
conMat2$overall["Accuracy"]## Accuracy
## 0.764
dengan mengeluarkan Battery sebagai prediktor kita malah meurunkan nilai akurasi sampai 4% menjadi hanya 76%. Jadi 2 Prediktor bersamaan tersebut lebih baik.
Random Forest 2 Predictor
library(randomForest)
RF_model1 <- randomForest(as.factor(price_range) ~ ram + battery_power , data=hptrain, importance=TRUE)
RF_model1##
## Call:
## randomForest(formula = as.factor(price_range) ~ ram + battery_power, data = hptrain, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 1
##
## OOB estimate of error rate: 21.1%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 454 46 0 0 0.092
## 1 66 371 63 0 0.258
## 2 0 83 341 76 0.318
## 3 0 0 88 412 0.176
Dengan random forest, 2 Predictor, kita mendapatkan nilai akurasi sebasar (100-21.15) = 78.85% angkanya sekitaran segitu sama seperti model dengan decision tree. Jika kita hanya menggunakan 1 variabel apakah kita akan lebih akurat?
Random Forest Single Predictor
RF_model2 <- randomForest(as.factor(price_range) ~ ram , data=hptrain, importance=TRUE)
RF_model2##
## Call:
## randomForest(formula = as.factor(price_range) ~ ram, data = hptrain, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 1
##
## OOB estimate of error rate: 32%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 407 88 5 0 0.186
## 1 99 285 109 7 0.430
## 2 4 119 277 100 0.446
## 3 0 8 101 391 0.218
Malah mengecil menjadi hanya 68% an jika kita hilangkan 1 predictor. Apakah yang 2 predictor yang terbaik? kita coba menggunakan atau menambahkan 1 predictor lagi menjadi 3
Random Forest 3 Predictor
RF_model3 <- randomForest(as.factor(price_range) ~ ram + battery_power + px_width , data=hptrain, importance=TRUE)
RF_model3##
## Call:
## randomForest(formula = as.factor(price_range) ~ ram + battery_power + px_width, data = hptrain, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 1
##
## OOB estimate of error rate: 12.45%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 463 37 0 0 0.074
## 1 41 421 38 0 0.158
## 2 0 38 419 43 0.162
## 3 0 0 52 448 0.104
Menggunakan Predictor tambahan yaitu Pixel Width, yang hanya memiliki correlation rendah dengan Price_range jika digabung dengan predictor lainnya semakin memperkuat model yang kita miliki dengan sakurasi sampai 88% paling bagus diantara 2 model sebelumnya.
tapi Bagaimana jika kita masukkan predictor yang memiliki korelasi sampai meyentuh 0 apakah akurasi berubah?
Random Forest with 0 Correlation Predictor
Disini kita menggunakan RAM, Battery Power dan 4G. Variabel 4G tidak memiliki korelasi kuat dengan kelompok harga bisa dilihat di correlation matrix. Kita akan mencoba membuat random forest.
RF_model4 <- randomForest(as.factor(price_range) ~ ram + battery_power + four_g , data=hptrain, importance=TRUE)
RF_model4##
## Call:
## randomForest(formula = as.factor(price_range) ~ ram + battery_power + four_g, data = hptrain, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 1
##
## OOB estimate of error rate: 19.5%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 467 33 0 0 0.066
## 1 77 374 49 0 0.252
## 2 0 87 338 75 0.324
## 3 0 0 69 431 0.138
Turns out, variabel tersebut sedikit membantu, naik sekitar 3% dari Model yang hanya memiliki 2 predictor menjadi nilai akurasinya 81.4%. Walaupun tidak meningkatkan akurasinya sebesar predictor px_width
4. Lakukan proses Cross Validation dan Fine Tune untuk menemukan model terbaik.
Predictor Tuning
Kita akan menghilangkan dulu Price_range karena Price range adalah yang akan kita cari bukan sebagai prediktor
library(randomForest)
library(plyr)
library(caret)
rftrain = subset(hptrain, select = -c(price_range))
rflabel = rf.label <- as.factor(hptrain$price_range)
FT_rf.1 <- randomForest(x = rftrain, y = rflabel, importance = TRUE)
FT_rf.1##
## Call:
## randomForest(x = rftrain, y = rflabel, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 4
##
## OOB estimate of error rate: 11.35%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 473 27 0 0 0.054
## 1 38 418 44 0 0.164
## 2 0 54 415 31 0.170
## 3 0 0 33 467 0.066
Dengan Menggunakan Semua 20 Predictor kita mendapatkan akurasi 89% kita akan melakukan top-down untuk mencari model dengan akurasi terbaik.
pre.or <- sort(FT_rf.1$importance[,3], decreasing = TRUE)
pre.or## ram battery_power px_width px_height mobile_wt
## 0.2676908 0.0627746 0.0283499 0.0274316 0.0040458
## fc sc_h pc n_cores m_dep
## 0.0020415 0.0017303 0.0015264 0.0013709 0.0011825
## sc_w three_g touch_screen wifi four_g
## 0.0011130 0.0001113 -0.0001370 -0.0002383 -0.0002945
## talk_time blue dual_sim clock_speed int_memory
## -0.0003853 -0.0004762 -0.0008217 -0.0012778 -0.0013508
Kita melihat bahwa Predictor paling berpengaruh mulari dari RAM dan seterusnya sampai paling lemah mirip correlation matrix.
RF_model5 <- randomForest(as.factor(price_range) ~ ram + battery_power + px_width + px_height , data=hptrain, importance=TRUE)
RF_model5##
## Call:
## randomForest(formula = as.factor(price_range) ~ ram + battery_power + px_width + px_height, data = hptrain, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 2
##
## OOB estimate of error rate: 8.3%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 477 23 0 0 0.046
## 1 25 452 23 0 0.096
## 2 0 25 441 34 0.118
## 3 0 0 36 464 0.072
Akurasi mencapai 91.5% menggunakan 4 Predictor
RF_model6 <- randomForest(as.factor(price_range) ~ ram + battery_power + px_width + px_height + sc_h , data=hptrain, importance=TRUE)
RF_model6##
## Call:
## randomForest(formula = as.factor(price_range) ~ ram + battery_power + px_width + px_height + sc_h, data = hptrain, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 2
##
## OOB estimate of error rate: 8.3%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 481 19 0 0 0.038
## 1 28 451 21 0 0.098
## 2 0 30 439 31 0.122
## 3 0 0 37 463 0.074
Mennggunakan 5 Prediktor, akurasi meningkat lagi mencapai hampir 92%
RF_model7 <- randomForest(as.factor(price_range) ~ ram + battery_power + px_width + px_height + sc_h + mobile_wt, data=hptrain, importance=TRUE)
RF_model7##
## Call:
## randomForest(formula = as.factor(price_range) ~ ram + battery_power + px_width + px_height + sc_h + mobile_wt, data = hptrain, importance = TRUE)
## Type of random forest: classification
## Number of trees: 500
## No. of variables tried at each split: 2
##
## OOB estimate of error rate: 8.5%
## Confusion matrix:
## 0 1 2 3 class.error
## 0 480 20 0 0 0.040
## 1 27 452 21 0 0.096
## 2 0 38 434 28 0.132
## 3 0 0 36 464 0.072
Saat menggunakan 6 Predictor, tingkat akurasi mulai menurun, biasanya accuracy will go downhill after this. Jadi jika kita teruskan hanya akan buang waktu karena semakin menurun yang pasti kita tidak akan pilih.
Memprediksi Price Range HP yang ada di test set dengan RF_model6
Karena kita tahu Model RandomForest 3 memiliki akurasi paling baik 92% kita akan menggunakannya untuk memprediksi harga HP Yang ada di test set
RF_prediction <- predict(RF_model6, hptest)
hptestx= hptest
hptestx$Prediction = RF_prediction
hptestxkarena di test set tidak ada value atau price range asli, maka kita asumsikan kita sebagai pengamat yang ingin memperkirakan harga HP Berdasarkan spesifikasinya. Prediksi kita akan benar kurang lebih mungkin sekitar 91.7% terhadap dimana price range hp tersebut aslinya. Memang tidak sempurna tapi yang jelas sudah lumayan baik.
Summary
Menggunakan Random Forest dengan 5 variabel yaitu RAM, battery_power, px_width, px_length, dan sc_h pada Model 6 memberikan kita tingkat akurasi paling tinggi diantara Predictor Models lainnya.
model_name = c("rf_model1","rf_model2","rf_model3","rf_model4","rf_model5","rf_model6","rf_model7")
accuracy= c(79,68,88,81.4, 91.5, 91.7,91)
summ_model = data.frame(model_name, accuracy)
summ_model