From 5a9b8469bd22984af5e53779c3b04b0c034711b5 Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Sun, 15 Mar 2026 12:33:10 +0700 Subject: [PATCH] feat: add Cohen's Kappa metric to classifier evaluation and output --- main.py | 1 + src/classifier.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 885664d..ad24fda 100644 --- a/main.py +++ b/main.py @@ -95,6 +95,7 @@ def main(): print(f"Training samples: {metrics['train_samples']}") print(f"Validation samples: {metrics['val_samples']}") print(f"Accuracy: {metrics['accuracy']:.2%}") + print(f"Cohen's Kappa: {metrics['kappa']:.4f}") print(f"Classes: {metrics['classes']}") print() diff --git a/src/classifier.py b/src/classifier.py index 901be1c..05eacf9 100644 --- a/src/classifier.py +++ b/src/classifier.py @@ -6,7 +6,7 @@ import numpy as np import rasterio from rasterio.transform import from_bounds from sklearn.model_selection import train_test_split -from sklearn.metrics import classification_report, accuracy_score, confusion_matrix +from sklearn.metrics import classification_report, accuracy_score, confusion_matrix, cohen_kappa_score from .data import RasterData, VectorData, load_raster, load_vector, extract_raster_values_by_polygons from .strategies import ClassificationStrategy @@ -80,11 +80,13 @@ class GISClassifier: # Evaluate y_pred = self.strategy.predict(X_val) accuracy = accuracy_score(y_val, y_pred) - + kappa = cohen_kappa_score(y_val, y_pred) + return { "train_samples": len(X_train), "val_samples": len(X_val), "accuracy": accuracy, + "kappa": kappa, "classes": list(self._classes), }