Statistik memiliki peranan penting dalam pengolahan dan analisis data karena dapat digunakan untuk memperoleh informasi dan pola yang terdapat dalam suatu kumpulan data. Seiring dengan perkembangan teknologi, jumlah dan jenis data yang tersedia semakin beragam sehingga diperlukan metode yang mampu mengolah data secara efektif. Salah satu metode yang banyak digunakan adalah machine learning, yaitu pendekatan yang memungkinkan komputer mempelajari pola dari data untuk menghasilkan prediksi atau klasifikasi. Penerapan machine learning telah digunakan dalam berbagai bidang karena mampu membantu proses analisis data dan pengambilan keputusan berdasarkan pola yang ditemukan dari data (Ariyanto & Wulandhari, 2024).
Dalam penerapan machine learning, kualitas data yang digunakan sebagai masukan (input) merupakan salah satu faktor yang dapat memengaruhi hasil pemodelan. Data yang tersedia terkadang memiliki fitur yang kurang relevan, informasi yang berulang, skala yang berbeda, atau bentuk data yang belum sesuai dengan kebutuhan algoritma. Oleh karena itu, data perlu dipersiapkan terlebih dahulu sebelum digunakan dalam proses pemodelan. Salah satu tahapan yang dapat dilakukan adalah feature engineering, yaitu proses mengolah dan mempersiapkan fitur agar dapat memberikan informasi yang lebih sesuai bagi model machine learning (Puteri dkk., 2021). Feature engineering dapat dilakukan melalui beberapa teknik, di antaranya transformasi fitur, pembuatan fitur baru, pengubahan data kategorik menjadi data numerik, serta seleksi fitur (Herdian dkk., 2024).
Berdasarkan latar belakang, rumusan masalah yang dapat disimpulkan adalah sebagai berikut:
Bagaimana konsep dari berbagai jenis feature engineering pada RStudio?
Bagaimana cara melakukan teknik feature engineering menggunakan program RStudio?
Berdasarkan rumusan masalah tersebut, tujuan yang dapat disimpulkan adalah sebagai berikut:
Mahasiswa memahami konsep dari berbagai jenis feature engineering pada RStudio.
Mahasiswa dapat melakukan teknik feature engineering menggunakan program RStudio.
Adapun batasan masalah pada penelitian ini yaitu, dengan menggunakan dataset data curah hujan.xlsx untuk melakukan preprocessing data menggunakan mean imputation, shuffle splitting, dan Robust Scaler. Kemudian melakukan interpolasi pada Keadaan_Cuaca, capping pada data numerik, serta penanganan imbalance data menggunakan SMOTE. Tampilkan dan interpretasikan setiap output!
Feature engineering merupakan proses mengolah dan mempersiapkan fitur atau variabel yang terdapat dalam suatu dataset agar lebih sesuai dan informatif untuk digunakan dalam proses pemodelan machine learning. Proses ini dapat dilakukan melalui berbagai teknik, seperti transformasi data, normalisasi, encoding, pembuatan fitur baru, dan seleksi fitur. Tujuan feature engineering adalah memperoleh fitur yang lebih relevan sehingga model dapat mempelajari pola dalam data dengan lebih baik. Penerapan pengolahan dan seleksi fitur juga dapat membantu meningkatkan kinerja model serta mengurangi kompleksitas data (Hadi dkk., 2024).
Berikut merupakan beberapa jenis feature engineering yang harus dilakukan:
Handling Missing Value Missing values atau missing data, terjadi ketika tidak ada data / tidak ada nilai yang tersimpan untuk observasi tertentu dalam suatu variabel. Missing data adalah kejadian yang umum dan dapat berdampak signifikan pada pemodelan machine learning. Data yang tidak lengkap adalah masalah yang tidak terhindarkan dalam menangani sebagian besar sumber data.
Kardinalitas Kardinalitas merujuk pada jumlah nilai unik, atau label, yang terdapat dalam suatu variabel kategoris. Konsep ini digunakan untuk mengukur granularitas atau keunikan data dalam sebuah fitur. Kardinalitas dapat diklasifikasikan dalam spektrum, namun umumnya dibedakan menjadi kardinalitas rendah (low cardinality) dan kardinalitas tinggi (high cardinality). Pengaruh kardinalitas, sangat krusial terhadap performa model dan efisiensi komputasi. Pertama, variabel high cardinality dapat menyebabkan curse of dimensionality jika ditransformasi menggunakan metode encoding standar seperti One-Hot Encoding. Kedua, kardinalitas secara signifikan meningkatkan risiko overfitting.
Splitting Data Splitting data merupakan strategi fundamental dalam machine learning untuk membagi himpunan data menjadi bagian terpisah: data training dan data testing. Pembagian ini krusial untuk membangun model yang robust dan dapat digeneralisasi dengan baik pada data baru. Proporsi pembagian data bersifat subjektif dan fleksibel. Rasio yang umum digunakan adalah 80% untuk training dan 20% untuk testing.
Handling Outlier Outlier, atau dikenal sebagai pencilan, merupakan observasi atau titik data yang menunjukkan deviasi ekstrem dan berbeda secara signifikan dari sebagian besar data lain dalam suatu set data. Keberadaan outlier dapat diatribusikan ke berbagai sumber, mulai dari kesalahan pengukuran, kesalahan entri data (misinput), kontaminasi data, hingga representasi sah dari kejadian langka atau variabilitas inheren dalam populasi. Dalam analisis statistik dan pemodelan machine learning, outlier menuntut perhatian khusus karena memiliki potensi untuk memberikan pengaruh yang tidak proporsional (disproportionate influence) terhadap hasil.
Scaling data Scaling data adalah salah satu langkah pra-pemrosesan dalam analisis data untuk mentransformasi variabel data ke dalam rentang skala yang sama. Tujuannya adalah untuk memastikan bahwa tidak ada satu variabel independen pun yang mendominasi proses pembelajaran hanya karena memiliki rentang nilai yang lebih besar dibandingkan variabel independen lainnya. Sebagaimana dinyatakan oleh Singh dan Singh (2020), normalisasi data sering kali dapat meningkatkan performa model prediktif secara signifikan, terutama untuk algoritma yang sensitif terhadap skala input.
Encoding Feature encoding adalah proses mengubah fitur kategoris atau non-numerik menjadi format numerik yang dapat digunakan sebagai input untuk algoritma machine learning. Banyak algoritma machine learning membutuhkan input numerik. Ada beberapa teknik umum untuk feature encoding, seperti One-Hot Encoding dan Ordinal Encoding.
Imbalanced Dataset Imbalanced Dataset adalah sebuah dataset di mana distribusi kelas atau kategorinya tidak setara. Kelas-kelas yang mencakup proporsi besar dari set data disebut kelas mayoritas, sedangkan kelas-kelas yang mencakup proporsi lebih kecil disebut kelas minoritas. Dalam praktiknya, akan lebih sering menjumpai data yang tidak seimbang daripada yang seimbang. Hal ini tidak serta merta menjadi masalah jika variabel target hanya memiliki sedikit ketidakseimbangan. Sayangnya, kenyataannya tidak selalu demikian dan variabel target Anda mungkin sangat tidak seimbang, sebagai contoh, dengan rasio 10:1.
Adapun jenis data yang digunakan dalam penelitian ini berupa data kuantitatif. Data kuantitatif adalah jenis data yang dapat diukur (measurable) atau dihitung secara langsung sebagai variabel angka. Data kuantitatif disebut juga dikenal dengan data numerik. Sumber data yang digunakan dalam penelitian ini yaitu data sekunder. Data sekunder adalah data yang diperoleh secara tidak langsung oleh peneliti melainkan melalui prantara. Data sekunder dalam penelitian ini yaitu data yang diperoleh dari dari Asisten Prakrikum Machine Learning and Modern Prediction.
Variabel adalah objek penelitian atau apa yang menjadi titik perhatian Variabel yang digunakan dalam penelitian ini adalah variabel hujan, suhu, kelembapan, keadaan cuaca dan kecepatan angin.
Langkah-langkah yang digunakan pada penelitian ini adalah sebagai berikut:
Masukkan data.
Melakukan pemeriksaan dan preprocessing data.
Melakukan mean imputation.
Melakukan shuffle splitting.
Melakukan Robust Scaler.
Melakukan interpolasi pada variabel Keadaan_Cuaca.
Melakukan capping pada data numerik.
Menangani imbalance data menggunakan SMOTE.
Menampilkan dan menginterpretasikan setiap output.
Menarik kesimpulan.
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## Attaching package: 'recipes'
## The following object is masked from 'package:stats':
##
## step
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
## # 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
Berdasarkan hasil dilakukan pemeriksaan missing value, diketahui bahwa dari 743 observasi terdapat nilai hilang pada variabel Keadaan_Cuaca sebanyak 9 data dan Kecepatan_Angin sebanyak 314 data. Sementara itu, variabel Hujan, Suhu, dan Kelembapan tidak memiliki nilai hilang. Kondisi tersebut menunjukkan bahwa data pada variabel Kecepatan_Angin memiliki jumlah missing value yang cukup besar sehingga perlu dilakukan penanganan atau imputasi sebelum data digunakan untuk analisis selanjutnya.
# Mean Imputation
df_imp <- data
df_imp$Kecepatan_Angin[
is.na(df_imp$Kecepatan_Angin)
] <- base::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 hasil dilakukan pemeriksaan missing value setelah proses imputasi, diketahui bahwa seluruh variabel, yaitu Hujan, Suhu, Kelembapan, Keadaan_Cuaca, dan Kecepatan_Angin, memiliki jumlah nilai hilang sebesar 0. Hal ini menunjukkan bahwa proses imputasi telah berhasil menangani seluruh missing value, sehingga data df_imp sudah lengkap dan dapat digunakan untuk tahap analisis selanjutnya.
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
Berdasarkan hasil dilakukan pembagian data dengan proporsi 80:20, diperoleh 594 data training dan 149 data testing dari total 743 observasi. Masing-masing data memiliki empat variabel prediktor, yaitu Suhu, Kelembapan, Keadaan_Cuaca, dan Kecepatan_Angin. Data training digunakan untuk membangun model, sedangkan data testing digunakan untuk mengevaluasi kemampuan model dalam memprediksi data baru.
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 identifikasi outlier menggunakan metode IQR, variabel Suhu memiliki Q1 sebesar 24,3 dan Q3 sebesar 28,9 dengan batas bawah 17,4 dan batas atas 35,8, sehingga tidak ditemukan outlier. Variabel Kelembapan juga tidak memiliki outlier, dengan batas bawah 46,5 dan batas atas 122,5. Sementara itu, variabel Kecepatan_Angin memiliki Q1 sebesar 5 dan Q3 sebesar 7 dengan batas bawah 2 dan batas atas 10, serta ditemukan 50 data outlier. Oleh karena itu, outlier pada Kecepatan_Angin perlu ditangani melalui proses capping agar nilai ekstrem tidak terlalu memengaruhi analisis selanjutnya.
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, variabel Suhu dan
Kelembapan tidak menunjukkan adanya pencilan yang berarti, sehingga
kedua variabel tersebut masih berada pada rentang data yang wajar.
Sementara itu, variabel Kecepatan_Angin menunjukkan beberapa nilai
pencilan pada boxplot, terutama pada nilai yang relatif tinggi. Hal ini
sesuai dengan hasil identifikasi menggunakan metode IQR yang menunjukkan
adanya 50 data outlier pada Kecepatan_Angin. Oleh karena itu, proses
capping dilakukan untuk membatasi nilai ekstrem tersebut tanpa menghapus
observasi, sehingga data menjadi lebih terkendali dan siap digunakan
untuk tahap analisis selanjutnya.
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 hasil didapatkan statistik deskriptif setelah proses capping, variabel Suhu memiliki nilai minimum 22,60, maksimum 31,60, dengan median 26,00 dan rata-rata 26,54. Variabel Kelembapan memiliki nilai minimum 52, maksimum 100, median 86,00, dan rata-rata 84,00. Sementara itu, Kecepatan_Angin memiliki nilai minimum 2, maksimum 10, median 6,655, dan rata-rata 6,447. Hasil tersebut menunjukkan bahwa nilai ekstrem pada data telah dibatasi sehingga ketiga variabel memiliki rentang nilai yang lebih terkendali dan siap digunakan untuk tahap analisis selanjutnya.
Berdasarkan grafik sesudah capping, variabel Suhu, Kelembapan, dan
Kecepatan_Angin menunjukkan distribusi data yang lebih terkendali.
Boxplot tidak lagi menunjukkan nilai yang berada di luar batas pencilan,
sehingga proses capping berhasil membatasi nilai ekstrem pada data.
Variabel Suhu dan Kelembapan tidak memiliki outlier sebelumnya, sehingga
bentuk distribusinya relatif tidak mengalami perubahan, sedangkan
Kecepatan_Angin mengalami pembatasan nilai ekstrem pada rentang 2 hingga
10. Dengan demikian, data setelah proses capping menjadi lebih stabil
dan dapat dilanjutkan ke tahap Robust Scaling serta pemodelan.
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
Berdasarkan hasil Robust Scaling, variabel Suhu, Kelembapan, dan Kecepatan_Angin telah ditransformasi menggunakan median dan IQR. Nilai hasil transformasi menunjukkan bahwa data telah berada pada skala yang lebih seragam, dengan nilai positif menunjukkan data berada di atas median dan nilai negatif menunjukkan data berada di bawah median. Sebagai contoh, nilai Suhu sebesar -0,500 menunjukkan bahwa nilai tersebut berada di bawah median, sedangkan nilai 1,09 menunjukkan posisi di atas median. Hasil transformasi ini selanjutnya dapat digunakan dalam proses pemodelan.
## y_train
## 1 2
## 128 466
## y_train
## 1 2
## 21.54882 78.45118
Beradasrkan hasil didapatkan hasil pengecekan menunjukkan bahwa data training terdiri atas 128 observasi kelas 1 (21,55%) dan 466 observasi kelas 2 (78,45%). Hasil tersebut menunjukkan bahwa distribusi kelas pada data training tidak seimbang, karena kelas 2 memiliki jumlah observasi yang jauh lebih banyak dibandingkan kelas 1.
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
Beradasrkan hasil didaptkan bahwa untuk mengatasi ketidakseimbangan kelas, dilakukan metode SMOTE (Synthetic Minority Over-sampling Technique). Hasil SMOTE menunjukkan bahwa jumlah data kelas 1 meningkat dari 128 menjadi 466 observasi, sedangkan kelas 2 tetap sebanyak 466 observasi. Dengan demikian, data training setelah SMOTE memiliki distribusi yang seimbang, yaitu 50% kelas 1 dan 50% kelas 2, sehingga diharapkan model dapat mempelajari kedua kelas secara lebih proporsional.
Berbagai jenis feature engineering pada RStudio merupakan teknik yang digunakan untuk mengolah dan mempersiapkan fitur dalam dataset agar lebih sesuai untuk digunakan dalam proses machine learning. Teknik feature engineering dapat berupa transformasi data, normalisasi, encoding, pembuatan fitur baru, dan seleksi fitur. Setiap teknik memiliki kegunaan yang berbeda, sehingga penerapannya disesuaikan dengan karakteristik data yang digunakan. Pengolahan fitur yang tepat dapat membuat data menjadi lebih terstruktur, informatif, dan mudah diproses oleh algoritma machine learning.
Teknik feature engineering dapat dilakukan menggunakan program RStudio dengan memanfaatkan berbagai fungsi dan package yang tersedia dalam bahasa pemrograman R. Proses tersebut dapat dilakukan dengan mengubah data kategorik menjadi numerik, menyamakan skala antarfitur, melakukan transformasi terhadap variabel, membuat fitur baru, serta memilih fitur yang relevan untuk analisis. Melalui penerapan teknik tersebut, mahasiswa dapat memahami tahapan pengolahan fitur secara langsung dan mempersiapkan dataset agar lebih sesuai untuk digunakan pada tahap pemodelan machine learning.
Berdasarkan hasil dari batasan masalah yang telah dilakukan, didapatkan hasil pengolahan data menunjukkan bahwa missing value telah berhasil ditangani, data terbagi menjadi 594 data training dan 149 data testing, serta ditemukan 50 outlier pada variabel Kecepatan_Angin yang kemudian ditangani menggunakan capping. Selanjutnya, proses Robust Scaling berhasil menyetarakan skala variabel numerik, sedangkan ketidakseimbangan kelas pada data training berhasil diatasi menggunakan SMOTE sehingga kelas 1 dan kelas 2 masing-masing memiliki proporsi 50%. Dengan demikian, data telah melalui tahapan prapemrosesan dan siap digunakan untuk proses pemodelan selanjutnya
Praktikan disarankan untuk mempelajari lebih lanjut mengenai program RStudio melalui berbagai sumber pembelajaran, seperti buku, jurnal, modul praktikum, maupun sumber belajar lainnya agar semakin memahami penerapan feature engineering. Praktikan juga diharapkan lebih teliti dalam melakukan pengolahan data dan penulisan kode program agar dapat meminimalkan kesalahan selama praktikum.
Ariyanto, S. D., & Wulandhari, L. A. (2024). Prediksi kinerja calon mahasiswa berdasarkan nilai seleksi masuk menggunakan pendekatan machine learning. Jurnal Ilmiah Komputasi, 23(2).
Fransiska, H. (2026). Modul Praktikum Machine Learning dan Model Prediction. Universitas Bengkulu: Bengkulu.
Hadi, R., Suwirmayanti, N. L. G. P., Kusuma, I. G. N. A., Saryanti, I. G. A. D., & Novayanti, P. D. (2024). Implementasi metode normalisasi dan seleksi fitur dalam optimasi algoritma K-Nearest Neighbor (KNN) untuk klasifikasi data bank. Jurnal Nasional Komputasi dan Teknologi Informasi, 7(5).
Herdian, C., Kamila, A., Tampinongkol, F. F., Kembau, A. S., & Budidarma, I. G. A. M. (2024). One-hot encoding feature engineering untuk label-based data studi kasus prediksi harga mobil bekas. Informasi Interaktif: Jurnal Informatika dan Teknologi Informasi, 9(1).
Puteri, A. N., Arizal, & Achmad, A. D. (2021). Feature selection correlation-based pada prediksi nasabah bank telemarketing untuk deposito. MATRIK: Jurnal Manajemen, Teknik Informatika dan Rekayasa Komputer, 20(2).