[英]How to specify the memory directory for Agglomerative clustering using sklearn
我正在尝试使用 sklearn 的AgglomerativeClustering
优化用于计算同一数据集上具有不同数量集群的多个结果的计算时间。
如https://stackoverflow.com/questions/36490241/sklearn-agglomerative-clustering-dynamically-updating-the-number-of-clusters?noredirect=1&lq=1中所示,可以存储由AgglomerativeClustering
计算的整个树. 然后,您可以重新指定聚类的n_clusters
参数 object 并将聚类到新数量的同一数据集的新聚类结果简单地提取。
如果这是一个微不足道的问题,我很抱歉,但我对使用 Python 处理 memory 的经验很少。我的问题是如何指定AgglomerativeClustering
使用的缓存目录。 在上面链接的例子中,它写成:
AgglomerativeClustering(n_clusters=10, memory='mycachedir', compute_full_tree=True)
'mycachedir'
到底是什么? 我需要用我自己的缓存目录替换它,还是 python 在某个名为'mycachedir'
地方创建一个新目录? 如果是这样,当我的程序结束时它会被删除吗? 我希望在我的程序停止或结束后删除缓存。 再次,如果这很明显,我很抱歉。
我尝试使用字符串"mycachedir"
运行它,但 Python 没有引发错误。 那么这个目录位于哪里呢? 它的行为如何? 例如,程序结束后它是否被删除?
根据 scikit-learn 文档,“如果给出一个字符串,它就是缓存目录的路径。 ”
事实上,缓存是使用joblib.Memory
package 的joblib
class 执行的。该目录由os.makedirs(os.path.expanduser(memory))
创建,其中memory
是AgglomerativeClustering
输入参数。 尽管可以使用joblib.Memory.clear
删除它,但据我所知,调用AgglomerativeClustering.fit
时情况并非如此。
使用sklearn.AgglomerativeClustering
示例,
import os
# EXTERNALS
from sklearn.cluster import AgglomerativeClustering
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
[4, 2], [4, 4], [4, 0]])
memory_dir = "~/tmp/my_cached_memory_folder"
# relative path depending on your working directory
# (cf. `os.getcwd()`)
clustering = AgglomerativeClustering(memory=memory_dir).fit(X)
full_path = os.path.abspath(os.path.expanduser(memory_dir))
print("Cached memory directory: " f"{full_path}")
print(os.path.isdir(full_path))
# Cached memory directory: /home/remi_cuingnet/tmp/my_cached_memory_folder
# True
请注意,您必须手动清除它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.