refactor: restrukturisasi folder eksperimen ke tasks modular
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
"""
|
||||
Tugas 3: Contoh Implementasi Berbagai Arsitektur Model Sesuai Karakteristik Data
|
||||
"""
|
||||
|
||||
import tensorflow as tf
|
||||
from tensorflow import keras
|
||||
from tensorflow.keras.layers import Conv2D, Dense, Embedding, Flatten, LSTM, MaxPooling2D
|
||||
from tensorflow.keras.models import Sequential
|
||||
from xgboost import XGBClassifier
|
||||
|
||||
|
||||
def build_models():
|
||||
print("=" * 60)
|
||||
print("TUGAS 3: CONTOH ARSITEKTUR MODEL SELECTION")
|
||||
print("=" * 60)
|
||||
|
||||
# (a) Prediksi Stok Barang dari Deret Waktu (LSTM)
|
||||
# Input shape: (samples, time_steps=12, features=1)
|
||||
model_a = Sequential([
|
||||
LSTM(32, input_shape=(12, 1)),
|
||||
Dense(1)
|
||||
], name="LSTM_Stock_Forecasting")
|
||||
model_a.compile(optimizer='adam', loss='mse')
|
||||
print("\n[Case A] Model LSTM untuk Prediksi Stok Barang (Time Series):")
|
||||
model_a.summary()
|
||||
|
||||
# (b) Klasifikasi Foto Produk Rusak vs Normal (CNN)
|
||||
# Input shape contoh citra RGB 128x128
|
||||
model_b = Sequential([
|
||||
Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 3)),
|
||||
MaxPooling2D((2, 2)),
|
||||
Flatten(),
|
||||
Dense(64, activation='relu'),
|
||||
Dense(1, activation='sigmoid') # binary: rusak vs normal
|
||||
], name="CNN_Defect_Classification")
|
||||
model_b.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
|
||||
print("\n[Case B] Model CNN untuk Klasifikasi Foto Produk (Computer Vision):")
|
||||
model_b.summary()
|
||||
|
||||
# (c) Analisis Sentimen Ulasan Play Store (LSTM + Embedding)
|
||||
vocab_size = 5000
|
||||
max_length = 100
|
||||
model_c = Sequential([
|
||||
Embedding(input_dim=vocab_size, output_dim=64, input_length=max_length),
|
||||
LSTM(64),
|
||||
Dense(32, activation='relu'),
|
||||
Dense(1, activation='sigmoid') # binary: positif vs negatif
|
||||
], name="LSTM_Sentiment_Analysis")
|
||||
model_c.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
|
||||
print("\n[Case C] Model LSTM + Embedding untuk Analisis Sentimen (NLP):")
|
||||
model_c.summary()
|
||||
|
||||
# (d) Prediksi Churn Pelanggan Tabular (ML Klasik - XGBoost)
|
||||
# X_train memiliki dimensi (n_samples, 15)
|
||||
model_d = XGBClassifier(
|
||||
n_estimators=100,
|
||||
max_depth=4,
|
||||
learning_rate=0.1,
|
||||
random_state=42
|
||||
)
|
||||
print("\n[Case D] Model XGBoost untuk Prediksi Churn (Tabular 15 fitur):")
|
||||
print(model_d)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
build_models()
|
||||
|
||||
Reference in New Issue
Block a user