POSEIDON / Phase_0 /README.md
JullMol's picture
Initial commit: Uploading POSEIDON Pipeline (Phase 0 & Phase 4)
4cba5e1 verified
|
Raw
History Blame Contribute Delete
3.84 kB
metadata
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) โšก

Python Statsmodels Scikit-Learn Hugging Face

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 โ€ข Data Training โ€ข Usage โ€ข 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.

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)

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. ๐Ÿ‡ฎ๐Ÿ‡ฉ