我的数据集中有三列。这是``比萨''类别下的餐厅列表,此数据来自yelp数据集。每个餐厅都有三列。纬度,经度,签到。我应该建立一个模型,在该模型中我应该能够预测应该在哪里开设新餐厅的坐标(纬度,经度),以使签到的次数可以很高。总共有4951行
checkins latitude longitude 0 2 33.394877 -111.600194 1 2 43.841217 -79.303936 2 1 40.442828 -80.186293 3 1 41.141631 -81.356603 4 1 40.434399 -79.922983 5 1 33.552870 -112.133712 6 1 43.686836 -79.293838 7 2 41.131282 -81.490180 8 1 40.500796 -79.943429 9 12 36.010086 -115.118656 10 2 41.484475 -81.921150 11 1 43.842450 -79.027990 12 1 43.724840 -79.289919 13 2 45.448630 -73.608719 14 1 45.577027 -73.330855 15 1 36.238059 -115.210341 16 1 33.623055 -112.339758 17 1 43.762768 -79.491417 18 1 43.708415 -79.475884 19 1 45.588257 -73.428926 20 4 41.152875 -81.358754 21 1 41.608833 -81.525020 22 1 41.425152 -81.896178 23 1 43.694716 -79.304879 24 1 40.442147 -79.956513 25 1 41.336466 -81.784790 26 1 33.231942 -111.721218 27 2 36.291436 -115.287016 28 2 33.641847 -111.995571 29 1 43.570217 -79.566431 ... ... ... ...
我尝试使用DBSCAN解决集群问题,并以下图结束。但是我对此毫无意义。我该如何进行下去,或者如何以其他方式解决该问题以获得结果?
import pandas as pd
from sklearn.cluster import DBSCAN
import numpy as np
import matplotlib.pyplot as plt
review=pd.read_csv('pizza_category.csv')
checkin=pd.read_csv('yelp_academic_dataset/yelp_checkin.csv')
final=pd.merge(review,checkin,on='business_id',how='inner')
final.dropna()
final=final.reset_index(drop=True)
X=final[['checkins']]
X['latitude']=final[['latitude']].astype(dtype=np.float64).values
X['longitude']=final[['longitude']].astype(dtype=np.float64).values
print(X)
arr=X.values
db = DBSCAN(eps=2,min_samples=5)
y_pred = db.fit_predict(arr)
plt.figure(figsize=(20,10))
plt.scatter(arr[:, 0], arr[:, 1], c=y_pred, cmap="plasma")
plt.xlabel("Feature 0")
plt.ylabel("Feature 1")
答案 0 :(得分:1)
这不是集群问题。
您想要做的是密度估算,您可以在此基础上根据以前的入住频率估算密度。