🍽️

Sistem Rekomendasi Restoran menggunakan Python

Oleh: Taufan Prakoso (@TaufanPR)
 
Sistem rekomendasi adalah salah satu aplikasi populer dari Data Science. Sistem rekomendasi restoran adalah aplikasi yang merekomendasikan restoran sejenis kepada pelanggan sesuai selera pelanggan. Kalau teman-teman ingin mempelajari cara membangun sistem rekomendasi restoran, artikel ini cocok untukmu.
Artikel ini akan membawamu kepada jalan untuk membangun sistem rekomendasi restoran menggunakan Python. Yuk mari.
 
Untuk membangun sistem rekomendasi restoran menggunakan Python, saya telah mengumpulkan data dari Kaggle. Teman-teman dapat mengunduh dataset dalam format .*csv untuk tugas ini di sini.
 
Setelah mengunduh TripAdvisor_RestauarantRecommendation.csv, sekarang mari impor library Python yang diperlukan dan dataset yang kita butuhkan untuk permainan duniawi ini:
 
import numpy as np import pandas as pd from sklearn.feature_extraction import text from sklearn.metrics.pairwise import cosine_similarity data = pd.read_csv("TripAdvisor_RestauarantRecommendation.csv") print(data.head())
 
Output:
Name Street Address \ 0 Betty Lou's Seafood and Grill 318 Columbus Ave 1 Coach House Diner 55 State Rt 4 2 Table Talk Diner 2521 South Rd Ste C 3 Sixty Vines 3701 Dallas Pkwy 4 The Clam Bar 3914 Brewerton Rd Location Type \ 0 San Francisco, CA 94133-3908 Seafood, Vegetarian Friendly, Vegan Options 1 Hackensack, NJ 07601-6337 Diner, American, Vegetarian Friendly 2 Poughkeepsie, NY 12601-5476 American, Diner, Vegetarian Friendly 3 Plano, TX 75093-7777 American, Wine Bar, Vegetarian Friendly 4 Syracuse, NY 13212 American, Bar, Seafood Reviews No of Reviews \ 0 4.5 of 5 bubbles 243 reviews 1 4 of 5 bubbles 84 reviews 2 4 of 5 bubbles 256 reviews 3 4.5 of 5 bubbles 235 reviews 4 4 of 5 bubbles 285 reviews Comments Contact Number \ 0 NaN +1 415-757-0569 1 Both times we were there very late, after 11 P... +1 201-488-4999 2 Waitress was very friendly but a little pricey... +1 845-849-2839 3 Not sure why I went there for the second time.... +1 469-620-8463 4 Doesn't look like much from the outside but wa... +1 315-458-1662 Trip_advisor Url \ 0 https://www.tripadvisor.com//Restaurant_Review... 1 https://www.tripadvisor.com//Restaurant_Review... 2 https://www.tripadvisor.com//Restaurant_Review... 3 https://www.tripadvisor.com//Restaurant_Review... 4 https://www.tripadvisor.com//Restaurant_Review... Menu Price_Range 0 Check The Website for a Menu $$ - $$$ 1 Check The Website for a Menu $$ - $$$ 2 http://tabletalkdiner.com/menu/breakfast/ $$ - $$$ 3 https://sixtyvines.com/menu/plano-tx/ $$ - $$$ 4 Check The Website for a Menu $$ - $$$
 
 

Selanjutnya, kita akan memilih dua kolom dari dataset (Name, Type):

data = data[["Name", "Type"]] print(data.head())
 
 
Output:
Name Type 0 Betty Lou's Seafood and Grill Seafood, Vegetarian Friendly, Vegan Options 1 Coach House Diner Diner, American, Vegetarian Friendly 2 Table Talk Diner American, Diner, Vegetarian Friendly 3 Sixty Vines American, Wine Bar, Vegetarian Friendly 4 The Clam Bar American, Bar, Seafood
 
 

Sebelum melanjutkan, yuk mari kita lihat apakah data tadi berisi nilai nol atau tidak:

print(data.isnull().sum())
 
Output:
Name 0 Type 13 dtype: int64
 

Nah, menurut output di atas, ada data yang memiliki beberapa nilai null di kolom Type. Oleh karena itu kita akan menghapus baris yang berisi nilai nol sebelum melanjutkan:

 
data = data.dropna()
 
 
Jenis restoran adalah fitur yang berharga dalam data untuk membangun sistem rekomendasi. Kolom tipe di sini mewakili kategori restoran. Misalnya, jika pelanggan menyukai restoran yang ramah vegetarian, dia hanya akan melihat rekomendasi jika mereka juga seorang vegetarian. Jadi kita akan menggunakan kolom Type sebagai feature untuk merekomendasikan restoran serupa kepada pelanggan:
 
 
feature = data["Type"].tolist() tfidf = text.TfidfVectorizer(input=feature, stop_words="english") tfidf_matrix = tfidf.fit_transform(feature) similarity = cosine_similarity(tfidf_matrix)
 
 
Sekarang kita akan mengatur nama restoran sebagai indeks sehingga kita dapat menemukan restoran serupa dengan memberikan nama restoran sebagai input:
 
indices = pd.Series(data.index, index=data['Name']).drop_duplicates()
 
 
Nah, sekarang begini cara menulis fungsi untuk merekomendasikan restoran yang serupa:
 
def restaurant_recommendation(name, similarity = similarity): index = indices[name] similarity_scores = list(enumerate(similarity[index])) similarity_scores = sorted(similarity_scores, key=lambda x: x[1], reverse=True) similarity_scores = similarity_scores[0:10] restaurantindices = [i[0] for i in similarity_scores] return data['Name'].iloc[restaurantindices] print(restaurant_recommendation("Market Grill"))
 
Output:
23 The Lion's Share 154 Houlihan's 518 Midgley's Public House 568 Aspen Creek Grill 770 Pete's Sunset Grille 1190 Paul Martin's American Grill 1581 Aviation Grill 1872 Aviation Grill 2193 Crest Bar & Grill 2612 Tahoe Joe's Famous Steakhouse Name: Name, dtype: object
 
 

۞ Ringkasan

Nah, begitulah cara membangun sistem rekomendasi restoran menggunakan bahasa pemrograman Python. Mudah bukan?
Sistem rekomendasi restoran adalah aplikasi yang merekomendasikan restoran sejenis kepada pelanggan sesuai selera pelanggan.
Saya harap teman-teman dapat mengambil manfaat dari artikel tentang membangun sistem rekomendasi restoran menggunakan Python ini.
Jangan khawatir jika tidak paham. Seorang ahli tadinya juga tidak paham. Tetaplah bertanya-tanya.
Semangat! 🍉
 
badge