{"id":22491828,"url":"https://github.com/travishorn/poi-classifier","last_synced_at":"2026-02-14T03:39:49.401Z","repository":{"id":233182863,"uuid":"671590031","full_name":"travishorn/poi-classifier","owner":"travishorn","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-27T17:04:10.000Z","size":2294,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-05T02:49:47.662Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/travishorn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-07-27T17:04:08.000Z","updated_at":"2023-07-27T17:04:14.000Z","dependencies_parsed_at":"2024-04-14T11:56:26.836Z","dependency_job_id":"17e073f5-e002-46d5-b339-55c8575526a8","html_url":"https://github.com/travishorn/poi-classifier","commit_stats":null,"previous_names":["travishorn/poi-classifier"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/travishorn/poi-classifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/travishorn%2Fpoi-classifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/travishorn%2Fpoi-classifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/travishorn%2Fpoi-classifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/travishorn%2Fpoi-classifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/travishorn","download_url":"https://codeload.github.com/travishorn/poi-classifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/travishorn%2Fpoi-classifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29434659,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T03:34:37.767Z","status":"ssl_error","status_checked_at":"2026-02-14T03:34:09.092Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-06T18:11:51.332Z","updated_at":"2026-02-14T03:39:49.382Z","avatar_url":"https://github.com/travishorn.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Geospatial Point of Interest (POI) Classifier\n\n## Objective\n\nA geospatial point of interest (POI) classifier that takes in data points with\nlatitude, longitude, and name information and predicts the category of each\npoint of interest. This project demonstrates data preprocessing, feature\nengineering, and classification using geospatial data.\n\n![A portion of a map showing national parks, monuments, etc. in the United\nStates](screenshots/map.png)\n\n![Accuracy, precision, recall, and F1-score metrics for the\nmodel](screenshots/scores.png)\n\nSupported categories are: National Battlefield Site, National Battlefield,\nNational Heritage Site, National Historic Park, National Historic Reserve,\nNational Historic Trail, National Lakeshore, National Memorial, National\nMilitary Park, National Monument, National Park, National Preserve, National\nRecreation Area, National Recreational River, National River, National Scenic\nRiver, National Scenic Trail, National Seashore, Other, Park, and Parkway.\n\n## Data Source\n\nNational Parks, Monuments, Preserves, \u0026 Historical Parks from POI Factory:\nhttp://www.poi-factory.com/node/31147\n\n## Methods Applied\n\n1. Data Collection: I gathered geospatial data points for different POIs. Each\n   data point had latitude, longitude, and a name of the POI (e.g., Fort Dupont\n   Park - 3600 F St SE Washington DC 20019\u003e202-426-7723).\n3. Data Preprocessing: I processed the data, handling missing values, removing\n   duplicates, and performing any necessary data transformations. I added type\n   information to categorize each point (e.g., National Park, National Heritage\n   Site, etc.) for 80% of the data, reserving 20% for demonstration purposes.\n4. Feature Engineering: I extracted relevant features from the geospatial data\n   that could be useful for classification. In this case: latitude, longitude,\n   and name, as they were the only data points available in the data.\n5. Model Selection: I chose and implemented a random forest classifier using the\n   popular machine learning library scikit-learn for Python.\n6. Model Training: I split the data into training and testing sets and trained\n   your classifier on the labeled data.\n7. Model Evaluation: I evaluated the classifier's performance using appropriate\n   metrics such as accuracy, precision, recall, and F1-score.\n8. Real-world Usage: I used the trained model to classify the remaining 20% of\n   data. The result is a complete set of national parks, monuments, preserves,\n   and historical parks in the United States, classified with their type.\n9. Data Visualization: I created a map of all POIs using Folium which colors\n   each marker differently depending on the type. This includes the types from\n   the predicted set.\n\n## Prerequisites\n\n- Python\n- `scikit-learn`, `pandas`, and `folium` installed through `pip`\n- If you want to use the pre-trained model on your own data: a CSV file\n  containing latitude, longitude, and names of POIs\n- If you want to train your own model: a CSV file containing latitude,\n  longitude, name, and types of POIs\n- If you want to use the same source data as I did: a copy of the data from [POI\n  Factory](http://www.poi-factory.com/node/31147)\n\n## Usage\n\nClone this repository\n\n```sh\ngit clone https://github.com/travishorn/poi-classifier\n```\n\nChange into the directory\n\n```sh\ncd poi-classifier\n```\n\n### Train\n\nIf you want to train your own data, make sure the training set is a CSV file\nnamed `poi_training.csv` with columns for `latitude`, `longitude`, `name`, and\n`type`.\n\nTrain the model\n\n```sh\npython train.py\n```\n\nThe script will reserve 20% of the training file for testing itself. Scores are\nshown and `trained_model.pkl` is created (or overwritten).\n\n![Accuracy, precision, recall, and F1-score metrics for the\nmodel](screenshots/scores.png)\n\n### Classify\n\nThe trained model saved at `trained_model.pkl` can be used to classify types of\nPOIs. Make sure the \"to classify\" set is a CSV file named `classify.csv` with\ncolumns for `latitude`, `longitude`, and `name`.\n\nPredict (classify) the POIs\n\n```sh\npython classify.py\n```\n\nA sample of the predicions are shown and `poi_classified.csv` is created which\nshould mirror `poi_to_classify.csv`, but with a `type` column.\n\n![POIs along with their predicted types](screenshots/classification_results.png)\n\n### Visualize\n\nGenerate a map of POIs using a combination of `poi_training.csv` and\n`poi_classified.csv`, which should now include a complete set of national parks,\nmonuments, preserves, and historical parks in the United States. Each marker is\ncolored according to the POI's type (e.g., national scenic rivers are dark blue,\nnational memorials are beige, etc.).\n\n![A portion of a map showing national parks, monuments, etc. in the United\nStates](screenshots/map.png)\n\n## License\n\nThe MIT License\n\nCopyright 2023 Travis Horn\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the “Software”), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftravishorn%2Fpoi-classifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftravishorn%2Fpoi-classifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftravishorn%2Fpoi-classifier/lists"}