1

我正在执行 HDBSCAN,并正在使用hdbscanR 中的 python 模块执行分析。我有以下代码:

library(reticulate)
hdb <- import("hdbscan") # Import hdbscan Python library
# Create dummy data. My actual data set is an already cleaned data frame.
dat <- data.frame(id=1:100, a = rbinom(100, 1, .4), b = rbinom(100, 1, .8), c = rbinom(100, 1, .6), d = rbinom(100, 1, .2))
datMat <- as.matrix(dat) # Convert to matrix so it correctly converts to a 2d array

clusterer = hdb$HDBSCAN(metric='jaccard') # Start clusterer with Jaccard distance metric
clusterer$fit(datMat) # Fit the data

接下来,我想看看浓缩的树状图。用于此的 Python 代码将是:

clusterer.condensed_tree_.plot()

翻译成R:

clusterer$condensed_tree_$plot()

该命令的输出是:

AxesSubplot(0.125,0.11;0.31744x0.77)

我可以将所有这些都放在一个 RMarkdown 文件中,使用原始 python,我会得到我想要的情节。但是,这仅在编织整个文件时有效,这可能需要一些时间。特别是当我目前正在通过 HDBSCAN 的不同参数设置时,如果有一种方法可以绘制浓缩树(和其他诊断图)而不必编织整个 RMarkdown 文件,那就太好了。

有人知道我是否/如何在不使用 RMarkdown 的情况下在 R 中绘制 Python 生成的图吗?

RMarkdown 文件示例:

\```{r}
dat <- data.frame(id=1:100, a = rbinom(100, 1, .4), b = rbinom(100, 1, .8), c = rbinom(100, 1, .6), d = rbinom(100, 1, .2))
datMat <- as.matrix(dat)
\```

\```{python}
import hdbscan

clusterer = hdbscan.HDBSCAN(metric='jaccard') # Start clusterer with Jaccard distance metric
clusterer.fit(r.datMat) # Fit the data
clusterer.condensed_tree_.plot()
\```
4

0 回答 0