inst/doc/rnndescent.R

## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(rnndescent)

## ----build knn----------------------------------------------------------------
iris_knn <- rnnd_knn(data = iris, k = 5)

## ----neighbor graph-----------------------------------------------------------
lapply(iris_knn, function(x) {
  head(x, 3)
})

## ----iris split---------------------------------------------------------------
iris_even <- iris[seq_len(nrow(iris)) %% 2 == 0, ]
iris_odd <- iris[seq_len(nrow(iris)) %% 2 == 1, ]

## ----build index--------------------------------------------------------------
iris_index <- rnnd_build(iris_even, k = 5)

## ----index neighbor graph-----------------------------------------------------
lapply(iris_index$graph, function(x) {
  head(x, 3)
})

## ----query index--------------------------------------------------------------
iris_odd_nn <- rnnd_query(
  index = iris_index,
  query = iris_odd,
  k = 5
)
lapply(iris_odd_nn, function(x) {
  head(x, 3)
})

## ----query knn data-----------------------------------------------------------
iris_knn_improved <- rnnd_query(
  index = iris_index,
  query = iris_even,
  init = iris_index$graph,
  k = 5
)

## ----sum distances------------------------------------------------------------
c(
  sum(iris_index$graph$dist),
  sum(iris_knn_improved$dist)
)

## ----neighbor overlap---------------------------------------------------------
neighbor_overlap(iris_index$graph, iris_knn_improved)

## ----parallel-----------------------------------------------------------------
iris_index <- rnnd_build(data = iris_even, k = 5, n_threads = 2)

Try the rnndescent package in your browser

Any scripts or data that you put into this service are public.

rnndescent documentation built on May 29, 2024, 8:38 a.m.