首页 > 解决方案 > 使用 DBSCAN for PySpark 检测异常值的问题

问题描述

我正在努力使用一个基于 PySpark 的 DBSCAN,我可以在我的 Spark 数据帧上运行来检测异常值。我从作者那里找到了一篇包括这篇文章的文章,包括它在他的Github中的实现,但遗憾的是,dbscan.py 此处编码的 dbscan 进程不起作用并None在我打印时返回df_clusters

import dbscan # include dbscan.py for importing dbscan
from sklearn.datasets import make_blobs
from pyspark.sql import types as T, SparkSession
from scipy.spatial import distance

spark = SparkSession \
        .builder \
        .appName("DBSCAN") \
        .config("spark.jars.packages", "graphframes:graphframes:0.7.0-spark2.3-s_2.11") \
        .config('spark.driver.host', '127.0.0.1') \
        .getOrCreate()
X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4, random_state=5)
data = [(i, [float(item) for item in X[i]]) for i in range(X.shape[0])]
schema = T.StructType([T.StructField("id", T.IntegerType(), False),
                               T.StructField("value", T.ArrayType(T.FloatType()), False)])
#please repartition appropriately                            
df = spark.createDataFrame(data, schema=schema).repartition(10)
df_clusters = dbscan.process(spark, df, .2, 10, distance.euclidean, 2, "checkpoint")

def process()入住的时候不知道是什么原因dbscan.py。另外,如果您知道另一个有效的基于 PySpark 的 DBSCAN 实现,我会很高兴找到它。我提供了一个colab Notebook用于快速调试。

标签: apache-sparkpysparkoutliersdbscan

解决方案


推荐阅读