Search code examples
rreticulate

Can't get result from the pyclustering object with reticulate


I want to cluster some data in R with library from Python (pyclustering). I am using reticulate package to do this:

library(reticulate)
# create some random array
np <- import("numpy", convert = FALSE)
dat <- np$random$rand(100,2)
# clustering with CURE
clus_cure <- import("pyclustering.cluster.cure")
clus_res <- clus_cure$cure(dat, 2)
clus_res$get_clusters()

But it returns NULL.

Please, where is a problem?


Solution

  • I think the issue is with use of pyclustering library and not with reticulate or R. As indicated in the README example, you need to run process() function on <pyclustering.cluster.cure.cure> object:

    library(reticulate)
    # create some random array
    np <- import("numpy", convert = FALSE)
    dat <- np$random$rand(10L,2L)
    # clustering with CURE
    clus_cure <- import("pyclustering.cluster.cure")
    clus_res <- clus_cure$cure(data = dat, number_cluster=2L)
    clus_res$process()
    print(clus_res$get_clusters())
    #> [[1]]
    #> [1] 2 3 8 0 1 7 4 9
    #> 
    #> [[2]]
    #> [1] 5 6
    

    Also, note that you need to explicitly specify integers, where expected