DBSCAN 是一种基于密度的分类方法

若一个点的密度达到算法设定的阖值则其为核心点(即R领域内点的数量不小于minPts)

所以对于DBSCAN需要设定的参数为两个半径和minPts

我们以一个啤酒的分类指标来做
第一步:提取数据,并分配变量

import pandas as pd
beer = pd.read_csv('data.txt', sep=' ')

X = beer[["calories","sodium","alcohol","cost"]]

第二步:构建模型,并做测试,我们使用的r半径为10,最小样本数为2

db = DBSCAN(eps=10, min_samples=2).fit(X)
print(db.labels_)
beer['cluster_db'] = db.labels_

第三步:根据轮廓系数选定参数,我们发现i=18时,轮廓参数最大

for i in range(5, 20):
    print(metrics.silhouette_score(X, DBSCAN(eps=i, min_samples=2).fit(X).labels_)) #X表示数据,DBSCAN(eps=i, min_samples=2).fit(X).labels_)表示分类的结果标签

 

posted on 2018-08-24 17:09  python我的最爱  阅读(548)  评论(0编辑  收藏  举报