我的数据集中有三列。这是属于’披萨’类别的餐厅列表。这些数据来自于yelp数据集。每个餐厅都有三列数据:纬度、经度和签到次数。我需要构建一个模型,以便能够预测应该在哪里开设新餐厅(纬度、经度),以便获得较高的签到次数。总共有4951行数据
checkins latitude longitude0 2 33.394877 -111.6001941 2 43.841217 -79.3039362 1 40.442828 -80.1862933 1 41.141631 -81.3566034 1 40.434399 -79.9229835 1 33.552870 -112.1337126 1 43.686836 -79.2938387 2 41.131282 -81.4901808 1 40.500796 -79.9434299 12 36.010086 -115.11865610 2 41.484475 -81.92115011 1 43.842450 -79.02799012 1 43.724840 -79.28991913 2 45.448630 -73.60871914 1 45.577027 -73.33085515 1 36.238059 -115.21034116 1 33.623055 -112.33975817 1 43.762768 -79.49141718 1 43.708415 -79.47588419 1 45.588257 -73.42892620 4 41.152875 -81.35875421 1 41.608833 -81.52502022 1 41.425152 -81.89617823 1 43.694716 -79.30487924 1 40.442147 -79.95651325 1 41.336466 -81.78479026 1 33.231942 -111.72121827 2 36.291436 -115.28701628 2 33.641847 -111.99557129 1 43.570217 -79.566431... ... ... ...
我尝试用DBSCAN进行聚类处理,得到以下图表。但我无法从中得出任何有意义的结论。我该如何进一步进行,或者如何以不同的方式处理这个问题以获得我的结果?
import pandas as pdfrom sklearn.cluster import DBSCANimport numpy as npimport matplotlib.pyplot as pltreview=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).valuesX['longitude']=final[['longitude']].astype(dtype=np.float64).valuesprint(X)arr=X.valuesdb = 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")
回答:
这不是一个聚类问题。
你想要做的是密度估计,基于之前的签到频率来估计密度。