首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DBSCAN学习内存问题

DBSCAN学习内存问题
EN

Stack Overflow用户
提问于 2016-09-06 05:00:00
回答 1查看 2.2K关注 0票数 4

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

代码语言:javascript
运行
复制
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())
EN

回答 1

Stack Overflow用户

发布于 2016-09-06 05:34:59

根据您正在处理的问题的类型,可以在DBSCAN构造函数中使用此参数:

leaf_size:int,可选(默认为30)叶大小传递给BallTree或cKDTree。这会影响构造和查询的速度,以及存储树所需的内存。最优值取决于问题的性质。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39340949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档