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)
hptrain
hptest <- read.csv("test.csv", header = TRUE)
hptest

Buat 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)

hpjoin

Assess 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))
Coorelations among attributes
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))

prediction

Menggunakan 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
hptestx

karena 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