gpt4 book ai didi

scikit-learn - DBSCAN sklearn 内存问题

转载 作者:行者123 更新时间:2023-12-04 13:04:25 26 4
gpt4 key购买 nike

我正在尝试使用 DBSCAN sklearn 实现进行异常检测。它适用于小型数据集 (500 x 6)。但是,当我尝试使用大型数据集 (180000 x 24) 时,它会遇到内存问题。我能做些什么来克服这个问题吗?

from sklearn.cluster import DBSCAN
import pandas as pd
from sklearn.preprocessing import StandardScaler
import numpy as np

data = pd.read_csv("dataset.csv")
# Drop non-continuous variables
data.drop(["x1", "x2"], axis = 1, inplace = True)
df = data

data = df.as_matrix().astype("float32", copy = False)

stscaler = StandardScaler().fit(data)
data = stscaler.transform(data)

print "Dataset size:", df.shape

dbsc = DBSCAN(eps = 3, min_samples = 30).fit(data)

labels = dbsc.labels_
core_samples = np.zeros_like(labels, dtype = bool)
core_samples[dbsc.core_sample_indices_] = True

# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

print('Estimated number of clusters: %d' % n_clusters_)

df['Labels'] = labels.tolist()

#print df.head(10)

print "Number of anomalies:", -1 * (df[df.Labels < 0]['Labels'].sum())

最佳答案

根据您要解决的问题类型,可以在 DBSCAN 构造函数中使用此参数:
leaf_size :int,可选(默认 = 30)
叶大小传递给 BallTree 或 cKDTree。这会影响构建和查询的速度,以及存储树所需的内存。最佳值取决于问题的性质。

如果这不适合您的需求,这个问题已经得到解决 here ,可以尝试使用ELKI的DBSCAN实现。

关于scikit-learn - DBSCAN sklearn 内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39340949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com