Perkembangan teknologi menyebabkan jumlah dan jenis data yang tersedia semakin beragam sehingga diperlukan metode yang mampu mengolah data tersebut agar dapat memberikan informasi yang berguna. Salah satu pendekatan yang dapat digunakan adalah machine learning, yaitu metode yang memungkinkan komputer mempelajari pola yang terdapat dalam data untuk mendukung proses prediksi maupun pengambilan keputusan. Dalam penerapannya, data perlu dipersiapkan terlebih dahulu agar dapat digunakan oleh algoritma secara optimal. Tahapan persiapan tersebut menjadi bagian penting karena karakteristik dan kualitas data dapat memengaruhi proses pembelajaran serta hasil pemodelan.
Data dalam machine learning dapat terdiri atas berbagai tipe, seperti data numerik dan data kategorik. Perbedaan karakteristik tersebut menyebabkan data perlu melalui proses pengolahan dan penyesuaian sebelum digunakan dalam pemodelan. Salah satu tahapan yang dapat diterapkan adalah encoding, yaitu mengubah data kategorik menjadi bentuk numerik yang dapat diproses oleh algoritma. Proses tersebut merupakan bagian dari feature engineering yang bertujuan menghasilkan representasi fitur yang sesuai dengan kebutuhan model (Hadi dkk., 2024).
Feature engineering merupakan tahapan dalam pengolahan data yang mencakup proses pembentukan, pemilihan, dan transformasi fitur agar data lebih sesuai untuk digunakan dalam algoritma machine learning. Tahapan ini dapat meliputi pemeriksaan missing value, kardinalitas, pembagian data, penanganan outlier, scaling, encoding, hingga penanganan imbalanced dataset. Penerapan tahapan tersebut perlu disesuaikan dengan karakteristik data dan kebutuhan pemodelan karena fitur yang dipersiapkan dengan baik dapat membantu meningkatkan kemampuan model dalam menghasilkan prediksi yang lebih baik (Faiz dkk., 2022).
Rumusan masalah dalam penelitian ini adalah sebagai berikut:
Bagaimana cara memahami konsep dari berbagai jenis feature engineering pada RStudio?
Bagaimana cara melakukan teknik feature engineering di program RStudio?
Adapun tujuan dari praktikum ini yaitu:
Mahasiswa dapat memahami konsep dari berbagai jenis feature engineering pada RStudio.
Mahasiswa dapat melakukan teknik feature engineering di program RStudio.
Adapun manfaat dari praktikum ini yaitu:
Bagi penulis, yaitu dapat memberikan informasi dan pengetahuan serta menerapkan ilmu pengetahuan mengenai mengenai teknik feature engineering dengan R.
Bagi Pembaca, yaitu dapat menambah ilmu pengetahuan dan pemahaman mengenai teknik feature engineering dengan R.
Adapun batasan masalah dari praktikum ini, yaitu gunakan dataset data curah hujan.xlsx untuk melakukan preprocessing data. NPM ganjil menggunakan mean imputation, shuffle splitting, dan Robust Scaler, sedangkan NPM genap menggunakan mode imputation, stratify splitting, dan Standard Scaler. Keduanya melakukan interpolasi pada Keadaan_Cuaca, capping pada data numerik, serta penanganan imbalance data menggunakan SMOTE. Tampilkan dan interpretasikan setiap output!
Machine Learning merupakan salah satu bagian penting dalam bidang kecerdasan buatan yang digunakan untuk menyelesaikan berbagai permasalahan. Teknologi ini memungkinkan komputer untuk mempelajari suatu pola dari data tanpa harus diberikan instruksi atau aturan secara eksplisit untuk setiap permasalahan. Dengan memanfaatkan algoritma dan model statistik, machine learning dapat melakukan pembelajaran berdasarkan pola dan informasi yang terdapat dalam data. Tujuan penerapan machine learning adalah membuat sistem mampu mengolah data secara efektif serta mengenali pola sehingga dapat digunakan untuk memahami karakteristik objek dan menghasilkan prediksi terhadap data yang belum diketahui (Nurhalizah dkk., 2024).
Penerapan machine learning dapat membantu mengurangi pekerjaan yang sebelumnya dilakukan secara manual. Algoritma machine learning mampu mempelajari hubungan dan pola yang kompleks dalam data sehingga tidak hanya bergantung pada aturan yang telah ditentukan sebelumnya. Hal tersebut memungkinkan sistem untuk digunakan dalam berbagai proses, seperti prediksi, klasifikasi, dan pengambilan keputusan. Meskipun demikian, penerapan machine learning juga memiliki beberapa tantangan, salah satunya berkaitan dengan keamanan sistem yang dapat menghadapi serangan atau manipulasi data. Selain itu, ketidakseimbangan data juga dapat memengaruhi kinerja model karena model cenderung lebih baik dalam mengenali kelas dengan jumlah data yang lebih banyak dibandingkan kelas minoritas (Nuhalizah dkk., 2024).
Berdasarkan proses pembelajarannya, machine learning secara umum terdiri atas tiga paradigma utama, yaitu sebagai berikut (Nurhalizah dkk., 2024):
A. Supervised Learning, yaitu metode pembelajaran yang menggunakan data yang telah memiliki label atau target. Model mempelajari hubungan antara data masukan dan label untuk menghasilkan prediksi atau melakukan klasifikasi pada data baru.
B. Unsupervised Learning, yaitu menggunakan data yang tidak memiliki label atau target. Model bertugas menemukan pola, struktur, atau kelompok yang terdapat dalam data secara mandiri, misalnya melalui proses klasterisasi.
C. Reinforcement Learning, yaitu metode pembelajaran yang melibatkan agen untuk melakukan tindakan berdasarkan kondisi tertentu. Agen memperoleh umpan balik berupa penghargaan (reward) atau penalti dari tindakan yang dilakukan, kemudian menggunakan informasi tersebut untuk menentukan tindakan yang lebih optimal.
Feature Engineering merupakan proses mengolah data mentah menjadi fitur yang sesuai dan dapat digunakan dalam algoritma machine learning. Proses ini mencakup pemilihan serta pengolahan fitur yang dianggap relevan dan memiliki pengaruh terhadap model. Penerapan feature engineering membutuhkan pemahaman terhadap karakteristik data karena melibatkan analisis data, pengetahuan mengenai data, serta pertimbangan dalam menentukan fitur yang tepat. Tujuan utama feature engineering adalah menghasilkan data yang lebih sederhana dan efisien untuk diproses, sekaligus meningkatkan kinerja model. Dengan demikian, kualitas fitur yang digunakan dapat menjadi faktor penting dalam menentukan hasil pemodelan, bahkan dapat lebih berpengaruh dibandingkan pemilihan algoritma yang kompleks. Berikut beberapa jenis feature engineering yang dapat diterapkan (Fransiska, 2026):
A. Handling Missing Value, yaitu suatu kondisi ketika terdapat data yang tidak tersedia pada suatu observasi. Penanganan missing value diperlukan agar data dapat digunakan secara optimal dalam proses pemodelan, misalnya dengan menghapus data atau melakukan imputasi menggunakan nilai tertentu seperti rata-rata, median, atau modus.
B. Kardinalitas, hal ini menunjukkan jumlah nilai atau kategori unik dalam suatu variabel kategorik. Kardinalitas yang tinggi dapat meningkatkan jumlah fitur setelah proses encoding, memperbesar kompleksitas data, serta meningkatkan risiko overfitting apabila beberapa kategori hanya memiliki sedikit observasi.
C. Splitting Data, yaitu proses membagi dataset menjadi data training dan testing. Data training digunakan untuk membangun model, sedangkan data testing digunakan untuk mengevaluasi kemampuan model dalam melakukan prediksi terhadap data yang belum digunakan saat pelatihan.
D. Handling Outlier, yaitu observasi yang memiliki nilai sangat berbeda dari sebagian besar data lainnya. Keberadaan outlier perlu diperiksa dan ditangani karena dapat memengaruhi hasil analisis dan kinerja model machine learning.
E. Scaling Data, yaitu proses mengubah skala variabel numerik agar berada pada rentang atau skala yang sebanding. Proses ini bertujuan mencegah fitur dengan nilai yang lebih besar mendominasi proses pembelajaran, terutama pada algoritma yang sensitif terhadap skala.
F. Encoding, yaitu proses mengubah data kategorik atau nonnumerik menjadi bentuk numerik agar dapat digunakan oleh algoritma machine learning. Teknik yang umum digunakan antara lain One-Hot Encoding dan Ordinal Encoding.
G. Imbalanced Dataset, yaitu suatu kondisi ketika jumlah observasi pada setiap kelas tidak seimbang. Kondisi ini dapat menyebabkan model lebih cenderung memprediksi kelas mayoritas sehingga kemampuan model dalam mengenali kelas minoritas menjadi kurang optimal.
Jenis data yang digunakan pada penelitian ini adalah data numerik. Data numerik merupakan data yang berbentuk angka atau bersifat kuantitatif yang dapat dianalisis. Data yang digunakan merupakan dataset curah hujan. Sumber data yang digunakan dalam penelitian ini yaitu data sekunder yang diberikan oleh Asisten Praktikum.
Penelitian ini menggunakan lima variabel, yaitu satu variabel kategorik dan empat variabel numerik. Variabel hujan (menunjukkan nilai curah hujan), suhu (menunjukkan kondisi suhu), kelembapan (menunjukkan tingkat kelembapan udara), keadaan cuaca (variabel kategorik yang menunjukkan kondisi cuaca), dan kecepatan angin (menunjukkan kecepatan angin).
Berikut adalah langkah-langkah yang dilakukan dalam analisis:
Membaca dan memeriksa dataset data curah hujan.xlsx.
Menangani missing value menggunakan mean imputation.
Melakukan interpolasi pada variabel Keadaan_Cuaca.
Menangani outlier pada data numerik menggunakan shuffle splitting.
Membagi data menjadi data training dan testing menggunakan shuffle splitting.
Melakukan scaling menggunakan Robust Scaler.
Menangani ketidakseimbangan data menggunakan metode SMOTE pada data training.
Menampilkan dan menginterpretasikan hasil dari setiap tahapan preprocessing.
library(zoo)
library(readxl)
library(rsample)
library(DescTools)
library(recipes)
library(themis)
library(ggplot2)
library(gridExtra)
# Import data
data <- read_excel("C:/Users/HYPE AMD/Downloads/data curah hujan.xlsx")
head(data)## # A tibble: 6 × 5
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 95 5 NA
## 2 1 24 90 1 NA
## 3 1 26.8 77 1 NA
## 4 1 29.6 62 2 2
## 5 1 30.8 56 1 7
## 6 1 31 55 1 7
## tibble [743 × 5] (S3: tbl_df/tbl/data.frame)
## $ Hujan : num [1:743] 1 1 1 1 1 1 1 2 2 2 ...
## $ Suhu : num [1:743] 23 24 26.8 29.6 30.8 31 30.4 30.9 30.2 29.7 ...
## $ Kelembapan : num [1:743] 95 90 77 62 56 55 57 58 62 62 ...
## $ Keadaan_Cuaca : num [1:743] 5 1 1 2 1 1 3 2 2 2 ...
## $ Kecepatan_Angin: num [1:743] NA NA NA 2 7 7 9 10 8 7 ...
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## 0 0 0 9 314
# Mean Imputation
df_imp <- data
df_imp$Kecepatan_Angin[
is.na(df_imp$Kecepatan_Angin)
] <- mean(df_imp$Kecepatan_Angin, na.rm = TRUE)
# Interpolasi Keadaan_Cuaca
df_imp$Keadaan_Cuaca <- na.approx(df_imp$Keadaan_Cuaca,na.rm = FALSE)
# cek keadaan missing value
colSums(is.na(df_imp))## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## 0 0 0 0 0
Berdasarkan batasan masalah diperintahkan untuk melakukan analisis pada data curah hujan yang diberikan asisten praktikum. Dari data tersebut dilakukan pengecekkan terlebih dahulu terhadap missing value-nya. Berdasarkan hasil analisis dari program R diperoleh bahwa terdapat 314 missing value pada variabel kecepatan angin dan 9 missing value pada variabel keadaan cuaca. Oleh karena itu, dilakukan penanganan terhadap missing value. Pada NPM ganjil, penanganan missing value variabel Kecepatan_Angin dilakukan menggunakan mean imputation, yaitu mengganti nilai yang hilang dengan nilai rata-rata variabel tersebut yaitu sebesar 6,655012. Sementara itu, missing value pada Keadaan_Cuaca ditangani menggunakan interpolasi linear. Setelah kedua proses tersebut dilakukan, seluruh variabel memiliki jumlah missing value sebesar 0, sehingga tidak terdapat lagi data yang hilang
set.seed(200)
split <- initial_split(df_imp, prop = 0.80)
train_data <- training(split)
test_data <- testing(split)
X_train <- train_data[, -which(names(train_data) == "Hujan")]
X_test <- test_data[, -which(names(test_data) == "Hujan")]
y_train <- train_data$Hujan
y_test <- test_data$Hujan
dim(X_train)## [1] 594 4
## [1] 149 4
## # A tibble: 6 × 5
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23.7 97 61 6.66
## 2 2 31 68 2 10
## 3 2 26.4 81 3 5
## 4 2 31.3 57 2 9
## 5 2 29.1 78 2 6.66
## 6 2 27.8 79 2 3
## # A tibble: 6 × 5
## Hujan Suhu Kelembapan Keadaan_Cuaca Kecepatan_Angin
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 23 95 5 6.66
## 2 1 31 55 1 7
## 3 2 30.9 58 2 10
## 4 2 28.6 73 1 5
## 5 1 24.6 90 2 6.66
## 6 2 26.3 80 1 6.66
Setelah missing value ditangani, data dibagi menjadi data training dan data testing menggunakan shuffle splitting dengan proporsi 80:20. Hasil pembagian menunjukkan bahwa data training terdiri dari 594 observasi dengan 4 variabel prediktor, sedangkan data testing terdiri dari 149 observasi dengan 4 variabel prediktor. Dengan demikian, sebanyak 80% data digunakan untuk proses pelatihan model dan 20% sisanya digunakan untuk menguji kemampuan model pada data yang tidak digunakan selama proses pelatihan. Pembagian dilakukan secara acak sehingga urutan data awal tidak menjadi dasar dalam menentukan data training dan testing.
Sebelum dilakukan capping, terlebih dahulu dilakukan pemeriksaan outlier pada variabel numerik. Variabel yang diperiksa yaitu Suhu, Kelembapan, dan Kecepatan_Angin.
num <- c("Suhu", "Kelembapan", "Kecepatan_Angin")
# Membuat tabel batas outlier
outliers <- data.frame(
Variabel = character(),
Q1 = numeric(),
Q3 = numeric(),
IQR = numeric(),
Batas_Bawah = numeric(),
Batas_Atas = numeric(),
Jumlah_Outlier = integer()
)
for (var in num) {
Q1 <- quantile(train_data[[var]], 0.25, na.rm = TRUE)
Q3 <- quantile(train_data[[var]], 0.75, na.rm = TRUE)
IQR_val <- IQR(train_data[[var]], na.rm = TRUE)
lower <- Q1 - 1.5 * IQR_val
upper <- Q3 + 1.5 * IQR_val
jumlah <- sum(
train_data[[var]] < lower |
train_data[[var]] > upper,
na.rm = TRUE
)
outliers <- rbind(
outliers,
data.frame(Variabel = var, Q1 = Q1, Q3 = Q3,
IQR = IQR_val, Batas_Bawah = lower,
Batas_Atas = upper, Jumlah_Outlier = jumlah
))
}
outliers## Variabel Q1 Q3 IQR Batas_Bawah Batas_Atas Jumlah_Outlier
## 25% Suhu 24.3 28.9 4.6 17.4 35.8 0
## 25%1 Kelembapan 75.0 94.0 19.0 46.5 122.5 0
## 25%2 Kecepatan_Angin 5.0 7.0 2.0 2.0 10.0 50
Berdasarkan hasil pemeriksaan menggunakan metode IQR, variabel Suhu dan Kelembapan tidak memiliki outlier karena tidak terdapat nilai yang berada di luar batas bawah dan batas atas. Sementara itu, variabel Kecepatan_Angin memiliki 50 nilai outlier.
diagnostic_plots <- function(data, variable) {
p1 <- ggplot(data, aes(x = .data[[variable]])
) +
geom_histogram(bins = 30) +labs(
title = paste("Histogram", variable),
x = variable,
y = "Frekuensi")
p2 <- ggplot(data, aes(y = .data[[variable]])
) +
geom_boxplot() + labs(title = paste("Boxplot", variable),
y = variable)
grid.arrange( p1, p2, ncol = 2)
}
# Sebelum capping
diagnostic_plots( X_train, "Suhu")
Berdasarkan histogram dan boxplot sebelum capping, terlihat bahwa
variabel Kecepatan_Angin memiliki beberapa nilai yang berada di luar
batas boxplot, sehingga menunjukkan adanya outlier. Sementara itu, pada
variabel Suhu dan Kelembapan tidak terlihat nilai yang berada di luar
batas boxplot.
Selanjutnya, dilakukan capping menggunakan metode Winsorization, nilai ekstrem pada Kecepatan_Angin dibatasi berdasarkan batas IQR. Capping dilakukan tanpa menghapus observasi sehingga jumlah data tetap dipertahankan. Pada Suhu dan Kelembapan, meskipun tidak ditemukan outlier, capping tetap diterapkan menggunakan batas yang dihitung dari data training sesuai dengan tahapan preprocessing yang digunakan.
X_train_capped <- X_train
X_test_capped <- X_test
for (i in num) {
q <- quantile(X_train[[i]], c(0.25, 0.75), na.rm = TRUE)
IQR <- q[2] - q[1]
lower <- q[1] - 1.5 * IQR
upper <- q[2] + 1.5 * IQR
X_train_capped[[i]] <- Winsorize(
X_train[[i]], val = c(lower, upper))
X_test_capped[[i]] <- Winsorize(
X_test[[i]], val = c(lower, upper))
}
summary(X_train_capped[num])## Suhu Kelembapan Kecepatan_Angin
## Min. :22.60 Min. : 52 Min. : 2.000
## 1st Qu.:24.30 1st Qu.: 75 1st Qu.: 5.000
## Median :26.00 Median : 86 Median : 6.655
## Mean :26.54 Mean : 84 Mean : 6.447
## 3rd Qu.:28.90 3rd Qu.: 94 3rd Qu.: 7.000
## Max. :31.60 Max. :100 Max. :10.000
Berdasarkan statistik deskriptif setelah dilakukan capping, variabel Suhu memiliki nilai minimum 22,60, median 26,00, dan maksimum 31,60. Variabel Kelembapan memiliki nilai minimum 52, median 86, dan maksimum 100, sedangkan Kecepatan_Angin memiliki nilai minimum 2, median 6,655, dan maksimum 10. Hasil tersebut menunjukkan bahwa nilai ekstrem pada ketiga variabel telah dibatasi sehingga tidak terlalu memengaruhi proses analisis selanjutnya.
Kemudian dapat dilihat pada histogram dan boxplot sesudah capping, nilai ekstrem pada variabel numerik telah dibatasi sesuai dengan batas yang ditentukan menggunakan metode IQR. Proses tersebut membuat nilai pencilan tidak lagi berada jauh di luar batas data, sedangkan jumlah observasi tetap dipertahankan karena tidak terdapat penghapusan data.
for (i in num) {
med <- median(X_train_capped[[i]], na.rm = TRUE)
iqr <- IQR(X_train_capped[[i]], na.rm = TRUE)
X_train_capped[[i]] <-(X_train_capped[[i]] - med) / iqr
X_test_capped[[i]] <-(X_test_capped[[i]] - med) / iqr
}
head(X_train_capped[num])## # A tibble: 6 × 3
## Suhu Kelembapan Kecepatan_Angin
## <dbl> <dbl> <dbl>
## 1 -0.500 0.579 0
## 2 1.09 -0.947 1.67
## 3 0.0870 -0.263 -0.828
## 4 1.15 -1.53 1.17
## 5 0.674 -0.421 0
## 6 0.391 -0.368 -1.83
Robust Scaler dilakukan untuk menyetarakan skala variabel numerik agar perbedaan rentang nilai tidak memengaruhi analisis, dengan menggunakan median dan IQR sehingga lebih tahan terhadap nilai ekstrem. Pada penelitian ini, Robust Scaler diterapkan pada Suhu, Kelembapan, dan Kecepatan_Angin setelah capping. Berdasarkan enam data pertama, nilai Suhu berkisar dari -0,500 hingga 1,15, Kelembapan dari -1,53 hingga 0,579, dan Kecepatan_Angin dari -1,83 hingga 1,67. Nilai positif menunjukkan data berada di atas median, sedangkan nilai negatif menunjukkan data berada di bawah median. Nilai 0 pada Kecepatan_Angin pada data pertama dan kelima menunjukkan bahwa nilainya tepat berada pada median. Hasil ini menunjukkan bahwa ketiga variabel telah ditransformasi ke skala yang lebih sebanding tanpa menghilangkan karakteristik relatif datanya.
## y_train
## 1 2
## 128 466
## y_train
## 1 2
## 21.54882 78.45118
Berdasarkan hasil pengecekan, data Hujan terdiri dari dua kelas, yaitu kelas 1 sebanyak 128 data (21,55%) dan kelas 2 sebanyak 466 data (78,45%). Perbedaan proporsi yang cukup besar menunjukkan bahwa data mengalami ketidakseimbangan (imbalance), karena kelas 2 jauh lebih dominan dibandingkan kelas 1. Oleh karena itu, diperlukan penanganan imbalance menggunakan metode SMOTE agar proporsi kedua kelas menjadi lebih seimbang.
train_full <- X_train_capped
train_full$Hujan <- factor(y_train)
set.seed(42)
smote_recipe <- recipe(Hujan ~ ., data = train_full) %>%
step_smote(Hujan, over_ratio = 1, neighbors = 5)
train_balanced <- bake(
prep(smote_recipe, training = train_full),
new_data = NULL
)
# Hasil SMOTE
table(y_train)## y_train
## 1 2
## 128 466
##
## 1 2
## 466 466
##
## 1 2
## 50 50
Berdasarkan hasil penerapan SMOTE, jumlah data pada kelas 1 yang awalnya sebanyak 128 data ditingkatkan menjadi 466 data, sedangkan kelas 2 tetap sebanyak 466 data. Setelah dilakukan SMOTE, kedua kelas memiliki proporsi yang sama, yaitu 50% untuk kelas 1 dan 50% untuk kelas 2. Hal ini menunjukkan bahwa SMOTE berhasil menyeimbangkan distribusi kelas dengan membentuk data sintetis pada kelas minoritas, sehingga kedua kelas memiliki jumlah observasi yang seimbang untuk digunakan pada tahap analisis selanjutnya.
Feature engineering merupakan proses pengolahan dan pembentukan fitur dari data agar dapat digunakan secara lebih optimal dalam proses machine learning. Feature engineering mencakup beberapa teknik, yaitu handling missing value, kardinalitas, splitting data, handling outlier, scaling data, encoding, dan penanganan imbalanced dataset. Setiap teknik memiliki fungsi yang berbeda sesuai dengan karakteristik data, seperti menangani data yang hilang, mengurangi pengaruh nilai ekstrem, menyetarakan skala variabel, serta mengatasi ketidakseimbangan kelas. Dengan demikian, pemahaman terhadap berbagai teknik feature engineering penting dilakukan karena kualitas fitur dapat memengaruhi proses dan hasil pemodelan machine learning.
Teknik feature engineering dapat dilakukan melalui beberapa tahapan preprocessing. Missing value ditangani menggunakan mean imputation dan interpolasi, data dibagi menggunakan shuffle splitting, outlier ditangani menggunakan capping, kemudian variabel numerik dilakukan scaling menggunakan Robust Scaler. Selanjutnya, ketidakseimbangan kelas pada variabel Hujan ditangani menggunakan SMOTE, sehingga jumlah kedua kelas menjadi seimbang. Dengan demikian, RStudio dapat digunakan untuk menerapkan berbagai teknik feature engineering sesuai dengan karakteristik data dan kebutuhan analisis.
Berdasarkan hasil analisis yang telah dilakukan, data curah hujan berhasil melalui tahapan feature engineering, yaitu penanganan missing value menggunakan mean imputation dan interpolasi, shuffle splitting, capping untuk menangani outlier, serta Robust Scaler untuk menyetarakan skala data. Hasil pemeriksaan menunjukkan bahwa outlier hanya terdapat pada variabel Kecepatan_Angin sebanyak 50 data. Selain itu, data Hujan mengalami imbalance dengan kelas 1 sebesar 21,55% dan kelas 2 sebesar 78,45%, kemudian berhasil diseimbangkan menggunakan SMOTE menjadi 50% pada masing-masing kelas.
Praktikan dapat melakukan pembelajaran lebih lanjut mengenai Feature Engineering dengan R agar semakin paham. Dapat dilakukan melalui sumber-sumber belajar lainnya. Dalam penulisan laporan praktikan juga diharapkan untuk selalu teliti dan memperhatikan tata cara penulisan yang baik.
Faiz, M. N., Somantri, O., & Muhammad, A. W. (2022). Machine Learning-Based Feature Engineering to Detect DDoS Attacks. Jurnal Nasional Teknik Elektro dan Teknologi Informasi, 11(3), 176-182.
Fransiska, H. (2026). Modul Praktikum Machine Learning dan Model Prediction. Universitas Bengkulu: Bengkulu.
Hadi, R., Pivin, N. L. G., Ngurah, I. G., & Kusuma, A. (2024). Implementasi metode normalisasi dan seleksi fitur dalam optimasi algoritma k-nearest neighbor (knn) untuk klasifikasi data bank. Jurnal Nasional Komputasi dan Teknologi Informasi (JNKTI), 7(5), 1064-1071.
Nurhalizah, R. S., Ardianto, R., Purwono. (2024). Analisis Supervised dan Unsupervised Learning pada Machine Learning: Systematic Literature Review. Jurnal Ilmu Komputer dan Informatika (JIKI), 4(1), 61-74.