Milvus针对向量数据做归一化处理

344 篇文章 10 订阅
202 篇文章 14 订阅

milvus归一化数据证明参考:
https://zhuanlan.zhihu.com/p/88117781
python处理归一化参考:
https://www.cnblogs.com/lvdongjie/p/11349701.html
官方文档sklearn参考:
https://scikit-learn.org/stable/
https://www.sklearncn.cn/40/

归一化

归一化 是 缩放单个样本以具有单位范数 的过程。如果你计划使用二次形式(如点积或任何其他核函数)来量化任何样本间的相似度,则此过程将非常有用。

这个观点基于 向量空间模型(Vector Space Model) ,经常在文本分类和内容聚类中使用.

函数 normalize 提供了一个快速简单的方法在类似数组的数据集上执行操作,使用 l1 或 l2 范式:

from sklearn import preprocessing
>>> X = [[ 1., -1.,  2.],
...      [ 2.,  0.,  0.],
...      [ 0.,  1., -1.]]
>>> X_normalized = preprocessing.normalize(X, norm='l2')

>>> X_normalized                                      
array([[ 0.40..., -0.40...,  0.81...],
 [ 1.  ...,  0.  ...,  0.  ...],
 [ 0.  ...,  0.70..., -0.70...]])

preprocessing 预处理模块提供的 Normalizer 工具类使用 Transformer API 实现了相同的操作(即使在这种情况下, fit 方法是无用的:该类是无状态的,因为该操作独立对待样本).

因此这个类适用于 sklearn.pipeline.Pipeline 的早期步骤:

>>> normalizer = preprocessing.Normalizer().fit(X)  # fit does nothing
>>> normalizer
Normalizer(copy=True, norm='l2')

在这之后归一化实例可以被使用在样本向量中,像任何其他转换器一样:

>>> normalizer.transform(X)                            
array([[ 0.40..., -0.40...,  0.81...],
 [ 1.  ...,  0.  ...,  0.  ...],
 [ 0.  ...,  0.70..., -0.70...]])

>>> normalizer.transform([[-1.,  1., 0.]])             
array([[-0.70...,  0.70...,  0.  ...]])

稀疏(数据)输入

函数 normalize 以及类 Normalizer 接收 来自scipy.sparse的密集类数组数据和稀疏矩阵 作为输入。

对于稀疏输入,在被提交给高效Cython例程前,数据被 转化为压缩的稀疏行形式 (参见 scipy.sparse.csr_matrix )。为了避免不必要的内存复制,推荐在上游选择CSR表示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Milvus 是一个开源的高性能向量数据库,专为大规模的向量数据(如深度学习中的特征表示)提供存储和搜索服务。在 Python 中,你可以使用 Milvus SDK 来方便地对数据进行向量化操作,以下是一些基本步骤: 1. **安装 Milvus**:首先,你需要从 Milvus 的 GitHub 仓库或 PyPI(Python Package Index)安装 Milvus SDK,例如使用 pip: ``` pip install milvus ``` 2. **连接 Milvus**:创建 Milvus 接口对象并连接到服务器,如果本地运行,通常是 localhost 和默认端口(19530): ```python from milvus import Milvus milvus = Milvus(host="localhost", port=19530) ``` 3. **加载数据**:将 Python 列表或数组转换为向量数据,通常是 numpy 数组,然后构建索引: ```python import numpy as np vectors = np.random.rand(100, 128) # 假设我们有100个128维向量 collection_name = "my_collection" vector_field_name = "vector_field" if not milvus.has_collection(collection_name): # 创建集合和向量字段 schema = {"fields": [{"name": vector_field_name, "type": "FLOAT_VECTOR", "dim": 128}]} milvus.create_collection(schema, collection_name) # 插入数据 milvus.insert(collection_name, vectors) ``` 4. **向量化搜索**:使用查询向量执行相似度搜索,例如使用 `IVF` + `FLAT` 或 `HNSW` 等搜索方法: ```python query_vector = np.random.rand(128) top_k = 10 params = {"nprobe": 32} results = milvus.search(collection_name, query_vector, top_k, params) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值