File size: 3,837 Bytes
4cba5e1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | ---
license: mit
tags:
- regression
- tabular-regression
- scikit-learn
- statsmodels
- fisheries
- vessel-length-estimation
datasets:
- custom
---
# ๐ POSEIDON: Phase 0
โก Prediksi Length Kapal Ikan dari Gross Tonnage (GT) โก
   
Sistem regresi untuk mengestimasi panjang (*Length*, dalam meter) kapal ikan berdasarkan nilai *Gross Tonnage* (GT). Model ini dilatih dari data gabungan **Global Fishing Watch (GFW) Vessels API** dan **EU Fleet Register**, sebagai bagian dari tahap awal (Phase 0) *pipeline* POSEIDON (Patrol Oriented SAR Enabled IUU Detection Over Indonesian Natuna).
[Model Details](#-model-details) โข [Data Training](#-data-training) โข [Usage](#-cara-pakai) โข [Contributors](#-contributors)
---
## ๐ฏ Model Details
Model dipilih otomatis dengan membandingkan RMSE antara dua kandidat formula (*Linear Regression* dan *Log-Log Power Regression*) pada data uji, lalu di-*fit* ulang dengan OLS (*statsmodels*) pada keseluruhan data untuk formula final.
- **Tipe model**: `log_log_power_regression`
- **Formula**: `Length = a * GT^b`
- **Koefisien**: `{"a": 5.7251, "b": 0.3088}`
- **Fitur input**: GT (*Gross Tonnage*)
- **Target output**: Length (meter)
- **R-squared**: 0.9491
- **Jumlah observasi training**: 79,902
---
## ๐ Data Training
- **Sumber**: Global Fishing Watch Vessels API (`public-global-vessel-identity:latest`) & EU Fleet Register
- **Jumlah baris bersih**: 79,902 (duplikat dihapus, nilai non-positif dibuang, outlier 1%โ99% persentil dipotong)
- **Rentang GT & Length**: Sesuai dengan distribusi kapal perikanan standar pada dataset GFW.
---
## ๐ Repository Structure (Phase 0)
| Berkas | Deskripsi |
|---|---|
| `poseidon_length_model.pkl` | Objek model asli (statsmodels OLS), dimuat dengan `joblib.load()` |
| `model_config.json` | Koefisien model dalam format ringan, tanpa *dependency* |
| `predict.py` | Script mandiri untuk prediksi memakai `model_config.json` |
| `POSEIDON_training_dataset_Length_Regression.xlsx` | Dataset final (GT, Length) yang dipakai untuk training |
---
## ๐ Cara Pakai
### Opsi 1: Tanpa *dependency* (Disarankan)
Pendekatan ini sangat ringan karena hanya membutuhkan Python bawaan dan `model_config.json`.
```python
import json
with open("model_config.json") as f:
cfg = json.load(f)
def predict_length(gt_value, cfg):
coef = cfg["coefficients"]
if cfg["model_type"] == "log_log_power_regression":
return coef["a"] * (gt_value ** coef["b"])
return coef["intercept"] + coef["slope"] * gt_value
# Contoh prediksi untuk kapal dengan GT 150
print(predict_length(150, cfg))
```
### Opsi 2: Dengan `statsmodels` (Objek model asli)
```python
import joblib
model = joblib.load("poseidon_length_model.pkl")
# Sesuaikan input dengan kebutuhan (misal log GT dan constant)
# print(model.predict([1, 150]))
```
---
## โ ๏ธ Keterbatasan
- Model hanya memakai satu fitur tunggal (GT), tidak memperhitungkan jenis alat tangkap (*geartype*), bendera negara, atau desain spesifik kapal.
- Prediksi pada nilai GT yang jauh melampaui rentang *training* bersifat ekstrapolasi dan berisiko kurang andal.
- Data GT dan Length bersumber dari registri publik internasional yang mungkin mengandung *noise* pelaporan.
---
## ๐จโ๐ป Contributors
Dipersembahkan oleh Tim Mahasiswa dari **Universitas Negeri Surabaya**:
- **Faishal Muflih Irfanu Tsaqib**
- **Daffa Ahmad Pangreksa**
- **Dimas Rafi Izzulhaq**
*Dibuat untuk mendukung penjagaan kedaulatan maritim dan kelestarian sumber daya laut Indonesia.* ๐ฎ๐ฉ
|