|
|
from collections import Counter |
|
|
import pandas as pd |
|
|
import numpy as np |
|
|
from scipy.spatial import cKDTree |
|
|
|
|
|
|
|
|
df_amenities = pd.read_csv("df_indonesia.csv").rename( |
|
|
columns={"latitude":"lat", "longitude":"lon"} |
|
|
) |
|
|
df_banks = pd.read_csv("df_bank_indonesia.csv").rename( |
|
|
columns={"latitude":"lat", "longitude":"lon"} |
|
|
) |
|
|
|
|
|
df_amenities["fsq_category_labels"] = df_amenities["fsq_category_labels"].apply( |
|
|
lambda x: eval(x) |
|
|
) |
|
|
|
|
|
bank_coords = df_banks[['lat','lon']].values |
|
|
tree_banks = cKDTree(bank_coords) |
|
|
|
|
|
amenity_coords = df_amenities[['lat','lon']].values |
|
|
tree_amenities = cKDTree(amenity_coords) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DATASET_COLUMNS = [ |
|
|
"Community and Government > Education", |
|
|
"Landmarks and Outdoors > Structure", |
|
|
"Arts and Entertainment > Art Gallery", |
|
|
"Arts and Entertainment > Movie Theater", |
|
|
"Retail > Department Store", |
|
|
"Business and Professional Services > Office", |
|
|
"Travel and Transportation > Road", |
|
|
"Dining and Drinking > Restaurant", |
|
|
"Community and Government > Residential Building", |
|
|
"Dining and Drinking > Breakfast Spot", |
|
|
"Business and Professional Services", |
|
|
"Arts and Entertainment > Amusement Park", |
|
|
"Travel and Transportation > Lodging", |
|
|
"Arts and Entertainment", |
|
|
"Dining and Drinking > Food Truck", |
|
|
"Dining and Drinking > Bar", |
|
|
"Retail > Sporting Goods Retail", |
|
|
"Retail > Computers and Electronics Retail", |
|
|
"Arts and Entertainment > Arcade", |
|
|
"Dining and Drinking > Cafe, Coffee, and Tea House", |
|
|
"Travel and Transportation > Transport Hub", |
|
|
"Health and Medicine > Physician", |
|
|
"Community and Government > Government Building", |
|
|
"Business and Professional Services > Convention Center", |
|
|
"Arts and Entertainment > Performing Arts Venue", |
|
|
"Landmarks and Outdoors > Field", |
|
|
"Business and Professional Services > Financial Service", |
|
|
"Landmarks and Outdoors > Park", |
|
|
"Sports and Recreation > Water Sports", |
|
|
"Landmarks and Outdoors > Other Great Outdoors", |
|
|
"Event > Convention", |
|
|
"Retail > Shopping Mall", |
|
|
"Business and Professional Services > Distribution Center", |
|
|
"Business and Professional Services > Automotive Service", |
|
|
"Health and Medicine > Hospital", |
|
|
"Dining and Drinking > Snack Place", |
|
|
"Business and Professional Services > Event Space", |
|
|
"Dining and Drinking > Food Court", |
|
|
"Travel and Transportation > Bike Rental", |
|
|
"Travel and Transportation > Parking", |
|
|
"Business and Professional Services > Radio Station", |
|
|
"Health and Medicine > Dentist", |
|
|
"Landmarks and Outdoors > Beach", |
|
|
"Retail > Flea Market", |
|
|
"Retail > Fashion Retail", |
|
|
"Retail > Food and Beverage Retail", |
|
|
"Retail > Office Supply Store", |
|
|
"Community and Government > Spiritual Center", |
|
|
"Health and Medicine > Medical Center", |
|
|
"Dining and Drinking > Bakery", |
|
|
"Dining and Drinking > Cafeteria", |
|
|
"Retail > Convenience Store", |
|
|
"Arts and Entertainment > Public Art", |
|
|
"Retail > Newsstand", |
|
|
"Retail > Furniture and Home Store", |
|
|
"Business and Professional Services > Auditorium", |
|
|
"Landmarks and Outdoors > Garden", |
|
|
"Community and Government > Library", |
|
|
"Community and Government > Organization", |
|
|
"Business and Professional Services > Health and Beauty Service", |
|
|
"Dining and Drinking > Food Stand", |
|
|
"Retail > Pharmacy", |
|
|
"Retail > Record Store", |
|
|
"Arts and Entertainment > Night Club", |
|
|
"Landmarks and Outdoors > Farm", |
|
|
"Community and Government > Social Club", |
|
|
"Sports and Recreation > Gym and Studio", |
|
|
"Sports and Recreation > Racquet Sports", |
|
|
"Retail > Costume Store", |
|
|
"Sports and Recreation > Soccer", |
|
|
"Event > Entertainment Event", |
|
|
"Retail > Market", |
|
|
"Sports and Recreation", |
|
|
"Community and Government > Town Hall", |
|
|
"Arts and Entertainment > Water Park", |
|
|
"Landmarks and Outdoors", |
|
|
"Business and Professional Services > Shoe Repair Service", |
|
|
"Retail > Automotive Retail", |
|
|
"Dining and Drinking > Dessert Shop", |
|
|
"Retail > Music Store", |
|
|
"Business and Professional Services > Factory", |
|
|
"Community and Government > Assisted Living", |
|
|
"Travel and Transportation > Transportation Service", |
|
|
"Health and Medicine > Medical Lab", |
|
|
"Retail", |
|
|
"Travel and Transportation > Rest Area", |
|
|
"Landmarks and Outdoors > Hiking Trail", |
|
|
"Sports and Recreation > Martial Arts Dojo", |
|
|
"Business and Professional Services > Laundry Service", |
|
|
"Retail > Pet Supplies Store", |
|
|
"Business and Professional Services > Design Studio", |
|
|
"Community and Government > Housing Development", |
|
|
"Business and Professional Services > Construction", |
|
|
"Business and Professional Services > Real Estate Service", |
|
|
"Landmarks and Outdoors > Historic and Protected Site", |
|
|
"Business and Professional Services > Photography Service", |
|
|
"Landmarks and Outdoors > Plaza", |
|
|
"Business and Professional Services > Child Care Service", |
|
|
"Event > Other Event", |
|
|
"Arts and Entertainment > Comedy Club", |
|
|
"Arts and Entertainment > Strip Club", |
|
|
"Arts and Entertainment > Casino", |
|
|
"Business and Professional Services > Legal Service", |
|
|
"Retail > Miscellaneous Store", |
|
|
"Travel and Transportation", |
|
|
"Retail > Boutique", |
|
|
"Sports and Recreation > Race Track", |
|
|
"Event > Marketplace", |
|
|
"Sports and Recreation > Baseball", |
|
|
"Retail > Arts and Crafts Store", |
|
|
"Travel and Transportation > Moving Target", |
|
|
"Community and Government > Cemetery", |
|
|
"Business and Professional Services > Wholesaler", |
|
|
"Business and Professional Services > Advertising Agency", |
|
|
"Arts and Entertainment > Stadium", |
|
|
"Arts and Entertainment > Country Dance Club", |
|
|
"Landmarks and Outdoors > Bridge", |
|
|
"Health and Medicine > Alternative Medicine Clinic", |
|
|
"Arts and Entertainment > Zoo", |
|
|
"Business and Professional Services > Food and Beverage Service", |
|
|
"Business and Professional Services > Storage Facility", |
|
|
"Business and Professional Services > Recycling Facility", |
|
|
"Business and Professional Services > Funeral Home", |
|
|
"Arts and Entertainment > Bowling Alley", |
|
|
"Retail > Hardware Store", |
|
|
"Retail > Stationery Store", |
|
|
"Retail > Bookstore", |
|
|
"Retail > Smoke Shop", |
|
|
"Sports and Recreation > Running and Track", |
|
|
"Retail > Vape Store", |
|
|
"Landmarks and Outdoors > Campground", |
|
|
"Retail > Gift Store", |
|
|
"Landmarks and Outdoors > Palace", |
|
|
"Business and Professional Services > Recording Studio", |
|
|
"Landmarks and Outdoors > States and Municipalities", |
|
|
"Community and Government > Community Center", |
|
|
"Travel and Transportation > Fuel Station", |
|
|
"Retail > Cosmetics Store", |
|
|
"Retail > Hobby Store", |
|
|
"Travel and Transportation > Travel Lounge", |
|
|
"Community and Government > Polling Place", |
|
|
"Retail > Baby Store", |
|
|
"Business and Professional Services > Telecommunication Service", |
|
|
"Health and Medicine > Healthcare Clinic", |
|
|
"Dining and Drinking > Donut Shop", |
|
|
"Travel and Transportation > Tourist Information and Service", |
|
|
"Dining and Drinking > Juice Bar", |
|
|
"Retail > Antique Store", |
|
|
"Retail > Toy Store", |
|
|
"Business and Professional Services > Event Service", |
|
|
"Landmarks and Outdoors > Monument", |
|
|
"Sports and Recreation > Snow Sports", |
|
|
"Travel and Transportation > Travel Agency", |
|
|
"Landmarks and Outdoors > Stable", |
|
|
"Arts and Entertainment > Museum", |
|
|
"Business and Professional Services > Home Improvement Service", |
|
|
"Retail > Flower Store", |
|
|
"Business and Professional Services > Technology Business", |
|
|
"Travel and Transportation > Electric Vehicle Charging Station", |
|
|
"Business and Professional Services > Business Center", |
|
|
"Landmarks and Outdoors > Lake", |
|
|
"Business and Professional Services > Film Studio", |
|
|
"Dining and Drinking > Vineyard", |
|
|
"Dining and Drinking > Distillery", |
|
|
"Business and Professional Services > Warehouse", |
|
|
"Business and Professional Services > Pet Service", |
|
|
"Dining and Drinking > Brewery", |
|
|
"Retail > Eyecare Store", |
|
|
"Health and Medicine", |
|
|
"Business and Professional Services > Tailor", |
|
|
"Retail > Board Store", |
|
|
"Sports and Recreation > Golf", |
|
|
"Business and Professional Services > Audiovisual Service", |
|
|
"Business and Professional Services > Manufacturer", |
|
|
"Retail > Shopping Plaza", |
|
|
"Business and Professional Services > Publisher", |
|
|
"Retail > Print Store", |
|
|
"Sports and Recreation > Gymnastics", |
|
|
"Landmarks and Outdoors > Mountain", |
|
|
"Retail > Perfume Store", |
|
|
"Arts and Entertainment > Gaming Cafe", |
|
|
"Travel and Transportation > Boat or Ferry", |
|
|
"Community and Government > Cultural Center", |
|
|
"Business and Professional Services > Employment Agency", |
|
|
"Arts and Entertainment > Psychic and Astrologer", |
|
|
"Retail > Big Box Store", |
|
|
"Arts and Entertainment > Pool Hall", |
|
|
"Community and Government > Animal Shelter", |
|
|
"Landmarks and Outdoors > Surf Spot", |
|
|
"Landmarks and Outdoors > Castle", |
|
|
"Arts and Entertainment > Internet Cafe", |
|
|
"Health and Medicine > Emergency Service", |
|
|
"Sports and Recreation > Volleyball Court", |
|
|
"Business and Professional Services > Security and Safety", |
|
|
"Sports and Recreation > Basketball", |
|
|
"Business and Professional Services > Shipping, Freight, and Material Transportation Service", |
|
|
"Health and Medicine > Veterinarian", |
|
|
"Health and Medicine > Acupuncture Clinic", |
|
|
"Dining and Drinking > Creperie", |
|
|
"Retail > Outlet Store", |
|
|
"Dining and Drinking > Bagel Shop", |
|
|
"Landmarks and Outdoors > Scenic Lookout", |
|
|
"Dining and Drinking > Winery", |
|
|
"Retail > Garden Center", |
|
|
"Business and Professional Services > Import and Export Service", |
|
|
"Sports and Recreation > Skating", |
|
|
"Health and Medicine > Physical Therapy Clinic", |
|
|
"Landmarks and Outdoors > Botanical Garden", |
|
|
"Travel and Transportation > Train", |
|
|
"Retail > Warehouse or Wholesale Store", |
|
|
"Retail > Luggage Store", |
|
|
"Business and Professional Services > TV Station", |
|
|
"Retail > Pop-Up Store", |
|
|
"Business and Professional Services > Entertainment Service", |
|
|
"Landmarks and Outdoors > Sculpture Garden", |
|
|
"Landmarks and Outdoors > Harbor or Marina", |
|
|
"Health and Medicine > Home Health Care Service", |
|
|
"Retail > Adult Store", |
|
|
"Health and Medicine > Chiropractor", |
|
|
"Health and Medicine > Mental Health Service", |
|
|
"Business and Professional Services > Art Studio", |
|
|
"Business and Professional Services > Metals Supplier", |
|
|
"Landmarks and Outdoors > Island", |
|
|
"Travel and Transportation > RV Park", |
|
|
"Landmarks and Outdoors > Lighthouse", |
|
|
"Retail > Construction Supplies Store", |
|
|
"Business and Professional Services > Plastics Supplier", |
|
|
"Retail > Video Store", |
|
|
"Event > Conference", |
|
|
"Retail > Tobacco Store", |
|
|
"Business and Professional Services > Agriculture and Forestry Service", |
|
|
"Landmarks and Outdoors > River", |
|
|
"Business and Professional Services > Chemicals and Gasses Manufacturer", |
|
|
"Business and Professional Services > Repair Service", |
|
|
"Business and Professional Services > Rubber Supplier", |
|
|
"Landmarks and Outdoors > Roof Deck", |
|
|
"Retail > Vintage and Thrift Store", |
|
|
"Sports and Recreation > Fishing Area", |
|
|
"Sports and Recreation > Sports Club", |
|
|
"Business and Professional Services > Business Service", |
|
|
"Business and Professional Services > Media Agency", |
|
|
"Landmarks and Outdoors > Hot Spring", |
|
|
"Landmarks and Outdoors > Well", |
|
|
"Business and Professional Services > Insurance Agency", |
|
|
"Community and Government > Summer Camp", |
|
|
"Landmarks and Outdoors > Bay", |
|
|
"Business and Professional Services > Industrial Equipment Supplier", |
|
|
"Retail > Comic Book Store", |
|
|
"Travel and Transportation > Toll Booth", |
|
|
"Dining and Drinking", |
|
|
"Arts and Entertainment > Fair", |
|
|
"Retail > Souvenir Store", |
|
|
"Sports and Recreation > Paintball Field", |
|
|
"Retail > Drugstore", |
|
|
"Arts and Entertainment > Exhibit", |
|
|
"Retail > Supplement Store", |
|
|
"Retail > Outdoor Supply Store", |
|
|
"Arts and Entertainment > Escape Room", |
|
|
"Health and Medicine > Optometrist", |
|
|
"Business and Professional Services > Engineer", |
|
|
"Sports and Recreation > Indoor Play Area", |
|
|
"Retail > Leather Goods Store", |
|
|
"Community and Government > Public Bathroom", |
|
|
"Business and Professional Services > Electrical Equipment Supplier", |
|
|
"Travel and Transportation > Baggage Locker", |
|
|
"Arts and Entertainment > Go Kart Track", |
|
|
"Arts and Entertainment > Circus", |
|
|
"Sports and Recreation > Hockey", |
|
|
"Landmarks and Outdoors > Forest", |
|
|
"Business and Professional Services > Computer Repair Service", |
|
|
"Business and Professional Services > Waste Management Service", |
|
|
"Travel and Transportation > Platform", |
|
|
"Retail > Textiles Store", |
|
|
"Business and Professional Services > Scientific Equipment Supplier", |
|
|
"Landmarks and Outdoors > Pedestrian Plaza", |
|
|
"Community and Government > Utility Company", |
|
|
"Community and Government > Public and Social Service", |
|
|
"Business and Professional Services > Petroleum Supplier", |
|
|
"Business and Professional Services > Wedding Hall", |
|
|
"Landmarks and Outdoors > Nature Preserve", |
|
|
"Business and Professional Services > Ballroom", |
|
|
"Community and Government > Prison", |
|
|
"Sports and Recreation > Recreation Center", |
|
|
"Sports and Recreation > Gun Range", |
|
|
"Dining and Drinking > Smoothie Shop", |
|
|
"Dining and Drinking > Night Market", |
|
|
"Retail > Discount Store", |
|
|
"Business and Professional Services > Welding Service", |
|
|
"Travel and Transportation > Pier", |
|
|
"Landmarks and Outdoors > Bathing Area", |
|
|
"Business and Professional Services > Print, TV, Radio and Outdoor Advertising Service", |
|
|
"Business and Professional Services > Online Advertising Service", |
|
|
"Arts and Entertainment > Aquarium", |
|
|
"Arts and Entertainment > Roller Rink", |
|
|
"Community and Government > Trailer Park", |
|
|
"Business and Professional Services > Paper Supplier", |
|
|
"Retail > Framing Store", |
|
|
"Landmarks and Outdoors > Tunnel", |
|
|
"Health and Medicine > Urgent Care Center", |
|
|
"Community and Government > Rehabilitation Center", |
|
|
"Landmarks and Outdoors > Fountain", |
|
|
"Arts and Entertainment > Planetarium", |
|
|
"Sports and Recreation > Cricket Ground", |
|
|
"Landmarks and Outdoors > Volcano", |
|
|
"Business and Professional Services > Research Laboratory", |
|
|
"Business and Professional Services > Equipment Rental Service", |
|
|
"Community and Government", |
|
|
"Retail > Medical Supply Store", |
|
|
"Landmarks and Outdoors > Bike Trail", |
|
|
"Business and Professional Services > Outdoor Event Space", |
|
|
"Sports and Recreation > Rugby", |
|
|
"Business and Professional Services > Laboratory", |
|
|
"Business and Professional Services > Water Treatment Service", |
|
|
"Business and Professional Services > Entertainment Agency", |
|
|
"Retail > Pawn Shop", |
|
|
"Arts and Entertainment > Salsa Club", |
|
|
"Landmarks and Outdoors > Tree", |
|
|
"Travel and Transportation > Toll Plaza", |
|
|
"Travel and Transportation > Port", |
|
|
"Landmarks and Outdoors > Rock Climbing Spot", |
|
|
"Business and Professional Services > Creative Service", |
|
|
"Business and Professional Services > Research Station", |
|
|
"Business and Professional Services > Refrigeration and Ice Supplier", |
|
|
"Business and Professional Services > Rental Service", |
|
|
"Travel and Transportation > Border Crossing", |
|
|
"Business and Professional Services > Industrial Estate", |
|
|
"Business and Professional Services > Tutoring Service", |
|
|
"Business and Professional Services > Laundromat", |
|
|
"Arts and Entertainment > Mini Golf Course", |
|
|
"Retail > Packaging Supply Store", |
|
|
"Business and Professional Services > Translation Service", |
|
|
"Retail > Duty-free Store", |
|
|
"Community and Government > Observatory", |
|
|
"Retail > Knitting Store", |
|
|
"Travel and Transportation > Cruise", |
|
|
"Business and Professional Services > Management Consultant", |
|
|
"Retail > Betting Shop", |
|
|
"Retail > Outlet Mall", |
|
|
"Retail > Auction House", |
|
|
"Travel and Transportation > Cable Car", |
|
|
"Business and Professional Services > Power Plant", |
|
|
"Landmarks and Outdoors > Dive Spot", |
|
|
"Health and Medicine > Maternity Clinic", |
|
|
"Health and Medicine > Women's Health Clinic", |
|
|
"Health and Medicine > Nutritionist", |
|
|
"Retail > Mobility Store", |
|
|
"Business and Professional Services > Renewable Energy Service", |
|
|
"Landmarks and Outdoors > Hill", |
|
|
"Health and Medicine > Hospice", |
|
|
"Business and Professional Services > Machine Shop", |
|
|
"Landmarks and Outdoors > Memorial Site", |
|
|
"Landmarks and Outdoors > Cave", |
|
|
"Travel and Transportation > Truck Stop", |
|
|
"Business and Professional Services > Logging Service", |
|
|
"Landmarks and Outdoors > Waterfront", |
|
|
"Sports and Recreation > Skydiving Center", |
|
|
"Arts and Entertainment > Disc Golf", |
|
|
"Business and Professional Services > Promotional Item Service", |
|
|
"Business and Professional Services > Lottery Retailer", |
|
|
] |
|
|
|
|
|
def compute_features(candidate_point, radius=0.005): |
|
|
lat, lon = candidate_point |
|
|
|
|
|
|
|
|
bank_idxs = tree_banks.query_ball_point([lat, lon], r=radius) |
|
|
|
|
|
print("[BANK]", bank_idxs) |
|
|
|
|
|
n_banks = len(bank_idxs) |
|
|
if n_banks > 0: |
|
|
neighbors = df_banks.iloc[bank_idxs] |
|
|
mean_dist_banks = np.mean(np.sqrt((neighbors['lat']-lat)**2 + (neighbors['lon']-lon)**2)) |
|
|
min_dist_bank = np.min(np.sqrt((neighbors['lat']-lat)**2 + (neighbors['lon']-lon)**2)) |
|
|
else: |
|
|
mean_dist_banks = radius |
|
|
min_dist_bank = radius |
|
|
|
|
|
|
|
|
amenity_idxs = tree_amenities.query_ball_point([lat, lon], r=radius) |
|
|
amenities = df_amenities.iloc[amenity_idxs] |
|
|
|
|
|
total_amenities = len(amenities) |
|
|
|
|
|
|
|
|
|
|
|
all_category_ids = [">".join(cats[0].split(">")[:2]).strip() for cats in amenities['fsq_category_labels'] if len(cats)>0] |
|
|
category_diversity = len(set(all_category_ids)) |
|
|
|
|
|
features = { |
|
|
'num_banks_in_radius': n_banks, |
|
|
|
|
|
|
|
|
'total_amenities': total_amenities, |
|
|
'category_diversity': category_diversity |
|
|
} |
|
|
|
|
|
|
|
|
print("[CATEGORIES]", all_category_ids) |
|
|
count_per_category = Counter(all_category_ids) |
|
|
for feat in DATASET_COLUMNS: |
|
|
print("[FEAT]",feat) |
|
|
|
|
|
features[f'num_{feat}'] = count_per_category.get(feat, 0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return features |