Template Eksperimen Machine Learning untuk Klasifikasi Penyakit Jantung menggunakan Heart Failure Prediction Dataset dari Kaggle.
- Dataset: Heart Failure Prediction Dataset
- Source: Kaggle - Heart Failure Prediction
- Size: 918 samples, 12 features
- Task: Binary Classification (Heart Disease: 0/1)
- Features: Age, Sex, ChestPainType, RestingBP, Cholesterol, FastingBS, RestingECG, MaxHR, ExerciseAngina, Oldpeak, ST_Slope, HeartDisease
Eksperimen_SML_[Nama-siswa]/
├── .github/
│ └── workflows/
│ └── preprocessing-workflow.yml # GitHub Actions workflow
├── heart-failure-prediction/ # Raw dataset directory
│ └── heart.csv
├── preprocessing/
│ ├── Eksperimen_[Nama-siswa].ipynb # Experimentation notebook
│ ├── automate_[Nama-siswa].py # Automated preprocessing script
│ └── heart_preprocessing/ # Processed dataset directory
│ ├── X_train.csv
│ ├── X_test.csv
│ ├── y_train.csv
│ ├── y_test.csv
│ └── heart_processed.csv
├── requirements.txt # Python dependencies
├── README.md # This file
└── preprocessing_report.md # Automated preprocessing report
- Melakukan tahapan experimentation secara manual
- Data loading pada notebook
- EDA (Exploratory Data Analysis) pada notebook
- Preprocessing pada notebook
- Semua tahap Basic terpenuhi
- File
automate_[Nama-siswa].pydengan fungsi preprocessing otomatis - Konversi dari proses eksperimen dengan struktur berbeda
- Mengembalikan data siap latih
- Semua tahap Skilled terpenuhi
- GitHub Actions workflow untuk preprocessing otomatis
- Repository dengan struktur folder sesuai kriteria
- Actions mengembalikan dataset terproses
# Clone repository
git clone https://github.com/username/Eksperimen_SML_[Nama-siswa].git
cd Eksperimen_SML_[Nama-siswa]
# Install dependencies
pip install -r requirements.txtBuka dan jalankan notebook preprocessing/Eksperimen_[Nama-siswa].ipynb di Jupyter atau Google Colab:
jupyter notebook preprocessing/Eksperimen_[Nama-siswa].ipynbfrom preprocessing.automate_[Nama-siswa] import preprocess_heart_disease_data
# Run automated preprocessing
X_train, X_test, y_train, y_test, preprocessor = preprocess_heart_disease_data('heart.csv')
# Use preprocessed data for model training
print(f"Training data shape: {X_train.shape}")
print(f"Testing data shape: {X_test.shape}")Workflow akan otomatis berjalan ketika:
- Push ke branch
mainataumaster - Ada perubahan pada folder
preprocessing/atau fileautomate_*.py - Manual trigger melalui GitHub Actions tab
- dataset hasil dapat diakses pada artifact workflow
- Load dataset dari CSV file
- Validasi struktur dan tipe data
- Identifikasi missing values
- Handle nilai 0 yang tidak valid pada Cholesterol dan RestingBP
- Imputasi dengan median untuk nilai numerik
- Deteksi dan hapus data duplikat
- Preserve data integrity
- One-Hot Encoding: ChestPainType, RestingECG, ST_Slope
- Label Encoding: Sex, ExerciseAngina (binary variables)
- StandardScaler untuk fitur numerik: Age, RestingBP, Cholesterol, MaxHR, Oldpeak
- Preserve distribusi data
- Ratio: 80% training, 20% testing
- Stratified split untuk menjaga distribusi target
- Random state: 42 (reproducible)
- Total Samples: 918
- Features: 11 input features + 1 target
- Target Distribution: ~55% Heart Disease, ~45% No Heart Disease
- Missing Values: None (explicit)
- Data Quality Issues: Zero values in Cholesterol (172 samples)
- Age Distribution: Most patients between 50-60 years
- Gender: More male patients (79%) than female (21%)
- Chest Pain: ASY (Asymptomatic) most common type
- Heart Rate: Lower max HR associated with heart disease
- Exercise Angina: Strong predictor of heart disease
- Push to main/master branch
- Changes in preprocessing files
- Manual workflow dispatch
- Environment Setup: Python 3.9, dependencies installation
- Data Download: Kaggle API integration (optional)
- Preprocessing: Run automated pipeline
- Validation: Quality checks on processed data
- Artifacts: Upload processed files
- Reporting: Generate preprocessing report
from preprocessing.automate_[Nama-siswa] import HeartDiseasePreprocessor
# Initialize preprocessor
preprocessor = HeartDiseasePreprocessor()
# Load and preprocess data
df = preprocessor.load_data('heart.csv')
X_train, X_test, y_train, y_test = preprocessor.fit_transform(df)
# Transform new data
new_data_processed = preprocessor.transform(new_data)
# Save processed data
preprocessor.save_processed_data(X_train, X_test, y_train, y_test, './output/')from preprocessing.automate_[Nama-siswa] import preprocess_heart_disease_data
# One-line preprocessing
result = preprocess_heart_disease_data('heart.csv', './output/')
X_train, X_test, y_train, y_test, preprocessor = resultEdit automate_[Nama-siswa].py to customize:
- Feature selection
- Encoding strategies
- Scaling methods
- Train-test split ratio
- Update
HeartDiseasePreprocessorclass - Modify column definitions
- Test with sample data
- Update documentation
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
# Load preprocessed data
X_train, X_test, y_train, y_test, _ = preprocess_heart_disease_data('heart.csv')
# Train model
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Evaluate
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))-
Kaggle API Error
# Check API credentials cat ~/.kaggle/kaggle.json # Re-download credentials from Kaggle
-
Missing Dependencies
pip install -r requirements.txt
-
File Path Issues
# Use absolute paths import os file_path = os.path.abspath('heart.csv')
-
Workflow Not Triggering
- Check file paths in trigger conditions
- Verify branch names (main vs master)
-
Kaggle Download Fails
- Add KAGGLE_USERNAME and KAGGLE_KEY secrets
- Check dataset URL
- Heart Failure Prediction Dataset
- Scikit-learn Documentation
- GitHub Actions Documentation
- Template MSML Guidelines
- Fork the repository
- Create feature branch (
git checkout -b feature/improvement) - Commit changes (
git commit -am 'Add improvement') - Push to branch (
git push origin feature/improvement) - Create Pull Request
⭐ Star this repository if it helped you!