我可以使用哪种聚类模型来预测以下结果?
Which clustering model can I use to predict the following outcome?
我的数据集中有三列。这是 'pizza' 类别下的餐厅列表。此数据来自 yelp dataset.There 中的每家餐厅的三列。纬度、经度、签到。我应该建立一个模型,我应该能够预测我应该开一家新餐厅的坐标(纬度,经度),以便签到的数量可以很高。共有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")
这是我得到的情节
这不是聚类问题。
你想要做的是密度估计,你根据以前的签到频率估计密度。
我的数据集中有三列。这是 'pizza' 类别下的餐厅列表。此数据来自 yelp dataset.There 中的每家餐厅的三列。纬度、经度、签到。我应该建立一个模型,我应该能够预测我应该开一家新餐厅的坐标(纬度,经度),以便签到的数量可以很高。共有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")
这是我得到的情节
这不是聚类问题。
你想要做的是密度估计,你根据以前的签到频率估计密度。