Classification

[1]:
import geopandas as gpd

blocks = gpd.read_parquet('blocks.parquet')
[2]:
from blocksnet.blocks.classification import BlocksClassifier

classifier = BlocksClassifier.default()
[3]:
categories_df = classifier.run(blocks)
2025-07-11 20:06:40.395 | INFO     | blocksnet.preprocessing.feature_engineering.core:_calculate_usual_features:35 - Calculating usual features
2025-07-11 20:06:40.599 | INFO     | blocksnet.preprocessing.feature_engineering.core:_calculate_radiuses:46 - Calculating radiuses
100%|██████████| 15549/15549 [00:04<00:00, 3155.25it/s]
100%|██████████| 15549/15549 [00:12<00:00, 1259.36it/s]
2025-07-11 20:06:57.881 | INFO     | blocksnet.preprocessing.feature_engineering.core:_calculate_aspect_ratios:58 - Calculating aspect ratios
100%|██████████| 15549/15549 [00:00<00:00, 31179.13it/s]
2025-07-11 20:06:58.384 | INFO     | blocksnet.preprocessing.feature_engineering.core:_calculate_centerlines:21 - Calculating centerlines
100%|██████████| 15549/15549 [00:40<00:00, 383.72it/s]
2025-07-11 20:07:39.347 | WARNING  | blocksnet.machine_learning.strategy.torch.tensor.supervised.classification.base_strategy:predict:52 - One should provide criterion_cls. Using CrossEntropyLoss by default.
2025-07-11 20:07:39.358 | WARNING  | blocksnet.machine_learning.strategy.torch.tensor.supervised.classification.base_strategy:predict_proba:66 - One should provide criterion_cls. Using CrossEntropyLoss by default.
[6]:
blocks[['geometry']].join(categories_df).plot('category',legend=True).set_axis_off()
../../_images/examples_blocks_classification_4_0.png