perf(prediction): pair_trawl base 확장 + 임계 완화 (A-1)
- SIMILARITY_OBSERVE 0.50 → 0.45 (pool 확대 후 recall 확보) - min_common_samples 6 → 4 (비분류 선박 샘플 부족 보정) - base_mmsis에 조업 속력대(1.5~5.0kn) 중국 412* 전체 추가 (classifications 500척만으로 bbox 기점 부족 → 실제 공조 페어 누락) 검증 목표: 10분 사이클에서 pair_detected ≥ 1
This commit is contained in:
부모
ac67b9b7af
커밋
d817e4cbbf
@ -390,7 +390,7 @@ def _trajectory_similarity(
|
||||
# bbox 1차 탐색 반경 (도 단위)
|
||||
BBOX_DEG = 0.01 # 약 1.1km — 주변 후보만 컷
|
||||
SIMILARITY_PAIR = 0.70 # 유력 페어
|
||||
SIMILARITY_OBSERVE = 0.50 # 관찰 페어
|
||||
SIMILARITY_OBSERVE = 0.45 # 관찰 페어 (0.50 → 0.45 완화: pool 확대 후 recall 확보)
|
||||
|
||||
|
||||
def find_pair_candidates(
|
||||
|
||||
@ -212,15 +212,28 @@ def run_analysis_cycle():
|
||||
pt_sub_registered: set[str] = set() # TODO: fishery_code=PT-S 구분
|
||||
base_mmsis: set[str] = {c['mmsi'] for c in classifications}
|
||||
base_mmsis |= pt_registered
|
||||
|
||||
# pool은 전체 24h 누적 tracks (중국 어선 중심 8k+ 선박)
|
||||
# 조업 속력대(1.5~5.0kn)에서 움직이는 모든 중국 선박을 base로 확장.
|
||||
# classifications 500척만으로는 bbox 기점이 부족해 실제 공조 페어를 놓침.
|
||||
pool_tracks = getattr(vessel_store, '_tracks', {}) or vessel_dfs
|
||||
for mmsi, df in pool_tracks.items():
|
||||
if not mmsi.startswith('412'):
|
||||
continue
|
||||
if df is None or df.empty or 'sog' not in df.columns:
|
||||
continue
|
||||
try:
|
||||
mean_sog = float(df['sog'].tail(12).mean())
|
||||
if 1.5 <= mean_sog <= 5.0:
|
||||
base_mmsis.add(mmsi)
|
||||
except Exception:
|
||||
continue
|
||||
|
||||
pair_candidates = find_pair_candidates(
|
||||
base_mmsis=base_mmsis,
|
||||
vessel_dfs=pool_tracks,
|
||||
get_vessel_info=vessel_store.get_vessel_info,
|
||||
pt_registered=pt_registered,
|
||||
pt_sub_registered=pt_sub_registered,
|
||||
min_common_samples=4,
|
||||
)
|
||||
pt_det = 0; coop_det = 0
|
||||
for cand in pair_candidates:
|
||||
|
||||
불러오는 중...
Reference in New Issue
Block a user