library(e1071)
library(ggplot2)
library(iterators)
library(timeDate)
##
## Attaching package: 'timeDate'
## The following objects are masked from 'package:e1071':
##
## kurtosis, skewness
library(lifecycle)
library(globals)
library(pROC)
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library(caret)
## Loading required package: lattice
library(naivebayes)
## naivebayes 0.9.7 loaded
data(iris)
# Memisahkan data menjadi variabel independen (x) dan variabel dependen (y)
x <- iris[, 1:4]
y <- iris[, 5]
# Mengubah variabel dependen menjadi faktor
y <- as.factor(y)
# Membagi data menjadi data latih dan data uji
set.seed(123)
trainIndex <- createDataPartition(y, p = 0.8, list = FALSE)
trainData <- x[trainIndex, ]
trainLabels <- y[trainIndex]
testData <- x[-trainIndex, ]
testLabels <- y[-trainIndex]
model <- naiveBayes(trainData,trainLabels)
# Melihat ringkasan model
print(model)
##
## Naive Bayes Classifier for Discrete Predictors
##
## Call:
## naiveBayes.default(x = trainData, y = trainLabels)
##
## A-priori probabilities:
## trainLabels
## setosa versicolor virginica
## 0.3333333 0.3333333 0.3333333
##
## Conditional probabilities:
## Sepal.Length
## trainLabels [,1] [,2]
## setosa 4.9800 0.3567661
## versicolor 5.9400 0.4903165
## virginica 6.6375 0.6949221
##
## Sepal.Width
## trainLabels [,1] [,2]
## setosa 3.3700 0.3450752
## versicolor 2.7700 0.3267556
## virginica 3.0125 0.3123012
##
## Petal.Length
## trainLabels [,1] [,2]
## setosa 1.4650 0.1717930
## versicolor 4.2325 0.4676112
## virginica 5.6225 0.5775667
##
## Petal.Width
## trainLabels [,1] [,2]
## setosa 0.2400 0.0928191
## versicolor 1.3275 0.2087662
## virginica 2.0700 0.2662176
model <- naiveBayes(trainData, trainLabels)
# Melihat ringkasan model
print(model)
##
## Naive Bayes Classifier for Discrete Predictors
##
## Call:
## naiveBayes.default(x = trainData, y = trainLabels)
##
## A-priori probabilities:
## trainLabels
## setosa versicolor virginica
## 0.3333333 0.3333333 0.3333333
##
## Conditional probabilities:
## Sepal.Length
## trainLabels [,1] [,2]
## setosa 4.9800 0.3567661
## versicolor 5.9400 0.4903165
## virginica 6.6375 0.6949221
##
## Sepal.Width
## trainLabels [,1] [,2]
## setosa 3.3700 0.3450752
## versicolor 2.7700 0.3267556
## virginica 3.0125 0.3123012
##
## Petal.Length
## trainLabels [,1] [,2]
## setosa 1.4650 0.1717930
## versicolor 4.2325 0.4676112
## virginica 5.6225 0.5775667
##
## Petal.Width
## trainLabels [,1] [,2]
## setosa 0.2400 0.0928191
## versicolor 1.3275 0.2087662
## virginica 2.0700 0.2662176
Analisis di atas menggunakan algoritma Naive Bayes untuk mengklasifikasikan tingkat kecerdasan mahasiswa berdasarkan dataset ‘iris’ bawaan R. Dataset ‘iris’ menyediakan informasi tentang panjang dan lebar kelopak serta mahkota bunga iris, beserta spesiesnya. Dalam analisis ini, fitur-fitur yang digunakan adalah panjang dan lebar kelopak serta mahkota bunga untuk memprediksi tingkat kecerdasan mahasiswa.
Berikut adalah langkah-langkah yang dilakukan dalam analisis tersebut:
Memuat Data: Dataset ‘iris’ dimuat menggunakan perintah data(iris).
Memisahkan Data: Dataset ‘iris’ dibagi menjadi variabel independen (x) yang berisi fitur-fitur dan variabel dependen (y) yang berisi tingkat kecerdasan.
Mengubah Variabel Dependen: Variabel dependen (y) diubah menjadi faktor karena merupakan variabel kategorikal.
Membagi Data: Dataset dibagi menjadi data latih (train) dan data uji (test) dengan perbandingan 80:20 menggunakan fungsi createDataPartition() dari paket ‘caret’.
Membuat dan Melatih Model: Model Naive Bayes dibuat menggunakan fungsi naiveBayes() dari paket ‘e1071’. Model ini dilatih menggunakan data latih dan label data latih.
Menguji Model: Model yang telah dilatih digunakan untuk memprediksi tingkat kecerdasan pada data uji menggunakan fungsi predict(). Prediksi tersebut disimpan dalam variabel predictions.
Menghitung Metrik Evaluasi: Metrik evaluasi yang dihitung adalah akurasi, yaitu proporsi prediksi yang benar dari total prediksi. Akurasi dihitung dengan membandingkan prediksi dengan label sebenarnya pada data uji.
Berdasarkan analisis yang dilakukan, dapat disimpulkan bahwa model Naive Bayes dengan menggunakan atribut panjang dan lebar kelopak serta mahkota bunga iris dari dataset ‘iris’ memberikan prediksi yang cukup akurat dalam mengklasifikasikan tingkat kecerdasan mahasiswa. Dalam contoh ini, akurasi digunakan sebagai metrik evaluasi untuk mengevaluasi performa model, di mana semakin tinggi akurasi, semakin baik model dalam memprediksi tingkat kecerdasan mahasiswa.