turicreate.image_similarity.ImageSimilarityModel.query

ImageSimilarityModel.query(dataset, label=None, k=5, radius=None, verbose=True, batch_size=64)

For each image, retrieve the nearest neighbors from the model’s stored data. In general, the query dataset does not need to be the same as the reference data stored in the model.

Parameters:
dataset : SFrame | SArray | turicreate.Image

Query data. If dataset is an SFrame, it must contain columns with the same names and types as the features used to train the model. Additional columns are ignored.

label : str, optional

Name of the query SFrame column with row labels. If ‘label’ is not specified, row numbers are used to identify query dataset rows in the output SFrame.

k : int, optional

Number of nearest neighbors to return from the reference set for each query observation. The default is 5 neighbors, but setting it to None will return all neighbors within radius of the query point.

radius : float, optional

Only neighbors whose distance to a query point is smaller than this value are returned. The default is None, in which case the k nearest neighbors are returned for each query point, regardless of distance.

verbose: bool, optional

If True, print progress updates and model details.

batch_size : int, optional

If you are getting memory errors, try decreasing this value. If you have a powerful computer, increasing this value may improve performance.

Returns:
out : SFrame

An SFrame with the k-nearest neighbors of each query observation. The result contains four columns: the first is the label of the query observation, the second is the label of the nearby reference observation, the third is the distance between the query and reference observations, and the fourth is the rank of the reference observation among the query’s k-nearest neighbors.

See also

similarity_graph

Notes

  • If both k and radius are set to None, each query point returns all of the reference set. If the reference dataset has \(n\) rows and the query dataset has \(m\) rows, the output is an SFrame with \(nm\) rows.

Examples

>>> model.query(queries, 'label', k=2)
+-------------+-----------------+----------------+------+
| query_label | reference_label |    distance    | rank |
+-------------+-----------------+----------------+------+
|      0      |        2        | 0.305941170816 |  1   |
|      0      |        1        | 0.771556867638 |  2   |
|      1      |        1        | 0.390128184063 |  1   |
|      1      |        0        | 0.464004310325 |  2   |
|      2      |        0        | 0.170293863659 |  1   |
|      2      |        1        | 0.464004310325 |  2   |
+-------------+-----------------+----------------+------+