首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有哪些聪明的方法可以有效地序列化数字向量?

有哪些聪明的方法可以有效地序列化数字向量?
EN

Stack Overflow用户
提问于 2018-08-01 17:38:25
回答 1查看 39关注 0票数 0

我正在做一些聚类/分类任务,并且正在考虑以一种尽可能节省空间的方式来存储稀疏向量。

实际的向量表示(即CSR)并不重要。出于我的目的,我选择了一种类似于Mallet使用的格式:由特征id(long)和value(整数)组成的对。它们可能看起来像这样:

代码语言:javascript
复制
6 0:2 5:3 21:7 31:1 33:9 41:5 42:2 60:6 77:6 88:1 92:3 104:1 117:4
8 5:9 19:2 21:6 31:1 33:1 42:7 77:4 104:1 117:2 140:3 141:2 154:6 
4 0:2 5:14 14:1 21:5 31:7 33:2 42:4 45:3 60:2 104:1 130:1 134:2 
5 0:5 5:2 21:5 28:1 31:1 33:4 42:4 60:3 71:1 77:3 117:1 130:1 134:3
11 0:6 5:9 15:2 18:1 21:5 28:4 31:4 32:1 33:2 42:6 49:3 56:1 60:3 94:1
1 0:4 5:4 21:5 28:1 33:5 40:1 42:4 60:4 77:3 150:1 154:2 157:1 161:1
3 0:6 5:11 21:10 28:2 31:2 33:6 42:10 60:1 77:4 85:1 97:1 134:3 141:2

最初,我将它们以如上所示的格式存储在文本文件中。令我惊讶的是,以二进制格式存储信息(8字节长,4字节整数的对)实际上看起来更大,这可能是因为大多数值似乎都在一个数字范围内,这反过来又恰好需要一个字节才能以ASCI编码存储。

在处理可变大小的数字时,有哪些节省空间的聪明方法(实际压缩除外,这对于随机访问目的是不可取的)?我想不出任何“确定性”的序列化方案,它可以根据值使用较少的空间,并且仍然易于解析。

EN

回答 1

Stack Overflow用户

发布于 2018-08-01 22:51:59

第一个数字保持不变,

然后特征在顺序上没有空格,每个数字由字母->单个数字a、两个数字-> b等预测。

example: 1 2 3 15 17 -> a123b1517 1 3 101 -> a13c101,

然后以相同的方式对其进行估值:

示例:

1 2 3 4 53 4 6 343 11 57 3-> a1234b53a46c343b11a573

您的示例:

6 0:2 5:3 21:7 31:1 33:9 41:5 42:2 60:6 77:6 88:1 92:3 104:1 117:4 8 5:9 19:2 21:6 31:1 33:1 42:7 77:4 104:1 117:2 140:3 141:2 154:6 4 0:2 5:14 14:1 21:5 31:7 33:2 42:4 45:3 60:2 104:1 130:1 134:2 ...

->

6a05b213133414260778892c104117|a2371952661314 8a5b192131334277c104117140141154|a926117412326 4a05b14213133424560c104130134|a2b14a1572432112 ...

由于要素和值之间的"|a“通常是,因此可以将其更改为一个字母,如z

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51630008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档