Simple Geographic Recommendation System Model
Note: This repository contains a simple pre-trained geographic route recommendation system model built with the Simple Geographic Recommendation System Library and designed for learning and experimentation. For production deployments, consider additional features like advanced scoring algorithms and scalability optimizations.
Model Description
- Model Type: Extends scikit-learn's geographic Nearest Neighbors using Haversine distance.
- Algorithm: BallTree with Haversine metric for efficient geographic queries.
- Input: Geographic coordinates (latitude, longitude) and search radius in meters.
- Output: Ranked list of routes within the specified radius with distances.
- Training Data: Synthetic route data with start/end coordinates and descriptions.
Project Structure
geo-recsys-simple-model/
βββ data/
β βββ synthetic_data.csv # Synthetic dataset for training
βββ inference/
β βββ predict.py # Inference script
βββ models/
β βββ geo_nearest_neighbors.joblib # Trained model file (serialized)
βββ training/
β βββ train.py # Training script
βββ pixi.toml # Pixi project configuration and dependencies
βββ pixi.lock # Locked dependency versions
βββ LICENSE # BSD-3-Clause license
βββ README.md # Project documentation
Training Data Format
The model expects training data with the following columns:
Column | Type | Description |
---|---|---|
description |
string | Route description or name |
start_latitude |
float | Starting latitude (-90 to 90) |
start_longitude |
float | Starting longitude (-180 to 180) |
end_latitude |
float | Ending latitude (-90 to 90) |
end_longitude |
float | Ending longitude (-180 to 180) |
Usage
I. Installation
pip install https://github.com/sierra-arn/geo-recsys-simple-lib/releases/latest/download/geo_recsys_simple_lib-0.1.0-py3-none-any.whl
II. Loading the Model
from geo_recsys_simple_lib import GeoNearestNeighbors, GeoSearchQuery, GeoCoordinates
model = GeoNearestNeighbors.from_huggingface_hub(
repo_id="sierra-arn/geo-recsys-simple-model",
filename="models/geo_nearest_neighbors.joblib"
)
III. Making Predictions
coordinates = GeoCoordinates(latitude=41.9096, longitude=12.4963)
radius_meters = 500
query = GeoSearchQuery(coordinates=coordinates, radius_meters=radius_meters)
results = model(query)
print(f"Found {results.total_found} routes within {radius_meters} meters:")
for result in results.results:
print(f"- {result.description}")
print(f" Distance: {result.geo_distance}m")
print(f" Start: ({result.start_coordinates.latitude}, {result.start_coordinates.longitude})")
print(f" End: ({result.end_coordinates.latitude}, {result.end_coordinates.longitude})")
print()
License
This model is distributed under the BSD-3-Clause License.
Third-Party Dependencies
This project library integrates multiple open-source libraries with separate licenses. Review THIRD-PARTY-LICENSES for complete dependency licensing information.
Inference Providers
NEW
This model isn't deployed by any Inference Provider.
π
Ask for provider support