当前位置:   article > 正文

DBSCAN算法的代码实现_dbscan代码

dbscan代码

1.读取数据

  1. import pandas as pd
  2. data = pd.read_excel('演示数据.xlsx')
  3. data.head()

2.数据可视化 

  1. import matplotlib.pyplot as plt
  2. plt.scatter(data.iloc[:, 0], data.iloc[:, 1], c="green", marker='*') # 以绿色星星样式绘制散点图
  3. plt.xlabel('x') # 添加x轴名称
  4. plt.ylabel('y') # 添加y轴名称
  5. plt.show()

3.数据建模 

  1. from sklearn.cluster import DBSCAN
  2. dbs = DBSCAN()
  3. dbs.fit(data)
  4. label_dbs = dbs.labels_

4.查看聚类结果

print(label_dbs)

5.用散点图展示DBSCAN算法的聚类结果 

  1. plt.scatter(data[label_dbs == 0].iloc[:, 0], data[label_dbs == 0].iloc[:, 1], c="red", marker='o', label='class0') # 以红色圆圈样式绘制散点图并加上标签
  2. plt.scatter(data[label_dbs == 1].iloc[:, 0], data[label_dbs == 1].iloc[:, 1], c="green", marker='*', label='class1') # 以绿色星星样式绘制散点图并加上标签
  3. plt.xlabel('x') # 添加x轴名称
  4. plt.ylabel('y') # 添加y轴名称
  5. plt.legend() # 设置图例

 KMeans VS DBSCAN

  1. from sklearn.cluster import KMeans
  2. KMs = KMeans(n_clusters=2)
  3. KMs.fit(data)
  4. label_kms = KMs.labels_
  1. plt.scatter(data[label_kms == 0].iloc[:, 0], data[label_kms == 0].iloc[:, 1], c="red", marker='o', label='class0') # 以红色圆圈样式绘制散点图并加上标签
  2. plt.scatter(data[label_kms == 1].iloc[:, 0], data[label_kms == 1].iloc[:, 1], c="green", marker='*', label='class1') # 以绿色星星样式绘制散点图并加上标签
  3. plt.xlabel('x') # 添加x轴名称
  4. plt.ylabel('y') # 添加y轴名称
  5. plt.legend() # 设置图例

可以看到,对于形状类似同心圆的数据,KMeans算法聚类效果较差,只能机械地将数据分为左右两部分,而无法以外圆内圆的方式进行区分。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/667847
推荐阅读
相关标签
  

闽ICP备14008679号