我正在执行 HDBSCAN,并正在使用hdbscan
R 中的 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()
\```