簡體   English   中英

python - 意外的 sklearn dbscan 結果

[英]python - unexpected sklearn dbscan result

我已經實現了一個簡單的代碼來聚類簡單的點數組,但結果是出乎意料的。

代碼:

from pandas import DataFrame
import matplotlib.pyplot as plt
import matplotlib
from sklearn.cluster import DBSCAN

x1 = [[10.0, 1.0], [10.0, 2.0], [10.0, 10.0], [10.0, 10.0], [10.0, 23.0], [10.0, 22.0]]
x2 = [[20.0, 2.0], [20.0, 15.0], [20.0, 26.0], [20.0, 13.0], [20.0, 32.0], [20.0, 35.0]]
x3 = [[30.0, 25.0], [30.0, 28.0], [30.0, 17.0], [30.0, 16.0], [30.0, 15.0], [30.0, 38.0]]
x4 = [[40.0, 1.0], [40.0, 2.0], [40.0, 16.0], [40.0, 41.0], [40.0, 40.0], [40.0, 39.0]]
x5 = [[60.0, 1.0], [60.0, 10.0], [60.0, 12.0], [60.0, 32.0], [60.0, 33.0], [60.0, 50.0]]

df1 = DataFrame(data= x1) 
df2 = DataFrame(data= x2)
df3 = DataFrame(data= x3)
df4 = DataFrame(data= x4)
df5 = DataFrame(data= x5)

data = df5

dbscan_opt=DBSCAN(eps=1,min_samples=2)
dbscan_opt.fit(data[[0,1]])
data['DBSCAN_opt_labels']=dbscan_opt.labels_
data['DBSCAN_opt_labels'].value_counts()

# Plotting the resulting clusters
colors=['purple','red','blue','green']
plt.figure(figsize=(6,6))
plt.scatter(data[0],data[1],c=data['DBSCAN_opt_labels'],cmap=matplotlib.colors.ListedColormap(colors),s=60)
plt.title('DBSCAN Clustering',fontsize=20)
plt.xlabel('Feature 1',fontsize=14)
plt.ylabel('Feature 2',fontsize=14)
plt.show()

結果:

結果

紅色圓圈表示我期望一個集群,但算法將它們檢測為噪聲點..

你能幫我修復 DBSCAN 的參數以檢測它們嗎?

謝謝你!

我發現了問題。 有限的顏色列表。 我應該添加更多 colors 因為 DBSCAN 生成新的集群但顏色相同,這是我的錯誤。

所以現在工作正常:

dbscan_opt=DBSCAN(eps=3.0,min_samples=1).fit(data[[0,1]])

data['DBSCAN_opt_labels']=dbscan_opt.labels_
data['DBSCAN_opt_labels'].value_counts()

print(data)

# Plotting the resulting clusters
colors=['purple','red','blue','green', 'magenta', 'teal', 'black']
plt.figure(figsize=(6,6))
plt.scatter(data[0],data[1],c=data['DBSCAN_opt_labels'],cmap=matplotlib.colors.ListedColormap(colors),s=60)
plt.title('DBSCAN Clustering',fontsize=20)
plt.xlabel('Feature 1',fontsize=14)
plt.ylabel('Feature 2',fontsize=14)
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM