---
title: DBSCAN
description: "| 模型接口类别 | 函数接口 |"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_16_0020.html
sourcePath: /source/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_16_0020.html
indexId: ab7bf0441f084b90c3f1e3a31f086390b35a5004c83f59100dbb4b3cba0ac53873
---
# DBSCAN

| 模型接口类别 | 函数接口 |
| --- | --- |
| ML API | def fitPredict(dataset: Dataset[\_]): DataFrame |


#### ML API

- 功能描述
  传入Dataset格式的样本数据，调用fitPredict接口，输出聚类结果。


- 输入输出

  1. 包名：org.apache.spark.ml.clustering
  2. 类名：DBSCAN
  3. 方法名：fitPredict
  4. 输入：Dataset[_]，训练样本数据，必须字段如下| 参数名称 | 取值类型 | 缺省值 | 描述 |
| --- | --- | --- | --- |
| featuresCol | Vector | features | 特征向量 |


  5. 基于原生算法优化的参数

```
def setMinPoints(value: Int): DBSCAN.this.type
def setEpsilon(value: Double): DBSCAN.this.type
def setSampleRate(value: Double): DBSCAN.this.type
```


    a. epsilon为DBSCAN算法的近邻距离参数，取值范围大于0.0。
    b. minPoints为DBSCAN算法定义核心点的近邻点个数阈值参数，取值范围大于1。
    c. sampleRate为对输入数据的采样率，基于采样数据用来对全量输入数据进行空间划分，取值范围为(0.0, 1.0]，缺省值为1.0，代表默认使用全量输入数据。
      代码接口示例： 1 2 3 4 val model = new DBSCAN() .setEpsilon(params.epsilon) .setMinPoints(params.minPoints) .setSampleRate(params.sampleRate)

  6. 输出：聚类结果，字段如下| 参数名称 | 取值类型 | 缺省值 | 描述 |
| --- | --- | --- | --- |
| predictionCol | Int | prediction | 该样本所属类别： 对于noise样本，其类别为\-1。 对于core样本，其类别为0。 对于border样本，其类别为1。 |
| labelCol | Int | label | 该样本所属聚类编号： 对于noise样本，其所属聚类编号默认为\-1。 对于core/border样本，其所属聚类编号≥0。 |


- 使用样例

```
val dbscan = new DBSCAN()
.setEpsilon(0.2)
.setMinPoints(3)
.setSampleRate(1.0)
val result = dbscan.fitPredict(trainData)
```
