I'm searching for an algorithm that generates all permutations of fixed-length partitions of an integer. Order does not matter.
For example, for n=4 and length L=3:
[(0, 2, 2), (2, 0, 2), (2, 2, 0),
(2, 1, 1), (1, 2, 1), (1, 1, 2),
(0, 1, 3), (0, 3, 1), (3, 0, 1), (3, 1, 0), (1, 3, 0), (1, 0, 3),
(0, 0, 4), (4, 0, 0), (0, 4, 0)]
Run Code Online (Sandbox Code Playgroud)
I bumbled about with integer partitions + permutations for …
这似乎是一个简单的请求,但谷歌不是我的朋友,因为"分区"在数据库和文件系统空间中得分很多.
我需要将N个值(N是常数)的数组的所有分区枚举成k个子数组.子数组就是 - 起始索引和结束索引.将保留原始数组的整体顺序.
例如,N = 4且k = 2:
[ | a b c d ] (0, 4)
[ a | b c d ] (1, 3)
[ a b | c d ] (2, 2)
[ a b c | d ] (3, 1)
[ a b c d | ] (4, 0)
Run Code Online (Sandbox Code Playgroud)
并且k = 3:
[ | | a b c d ] (0, 0, 4)
[ | a | b c d ] (0, 1, 3)
: …Run Code Online (Sandbox Code Playgroud) 我正在尝试基于谓词列表对地图进行多分区.
我写了以下函数来做到这一点:
def multipartition[A,B](map : Map[A,B], list : List[(A,B) => Boolean]) : List[Map[A,B]] =
list match {
case Nil =>
Nil
case l :: ls =>
val (a, b) = map partition l; // type mismatch; found (A,B) => Boolean, required: (A,B) => Boolean
return a :: multipartition(b, ls)
}
Run Code Online (Sandbox Code Playgroud)
Scala编译器(我运行2.9.1)失败在与所指示的地方 "类型不匹配;实测值(A,B)=>布尔,需要:(A,B)=>布尔".
有没有人见过这样的东西?知道怎么解决吗?
谢谢,
唱片
散列和索引都用于对某些预定义公式的数据进行分区.但我无法理解两者之间的关键区别.
在散列中,我们在一些键值对的基础上划分数据,类似于索引,我们也在一些预定值上划分数据.
任何人都可以帮我解决Hashing和Indexing之间的区别,以及如何决定是使用散列还是索引.
我需要一种存储任意大小的集合的方法,以便以后快速查询.我将需要查询已存储的子集或集合的结果数据结构.
===后来的编辑:为了澄清,这个问题的一个被接受的答案将是一个研究的链接,该研究提出了解决这个问题的方法.我不希望人们自己开发算法.我一直在研究这里发现的元组聚类算法,但它并不完全是我想要的,因为从我的理解它将元组"聚类"成更简单,离散/近似的形式并失去原始元组.
现在,一个更简单的例子:
[alpha, beta, gamma, delta] [alpha, epsilon, delta] [gamma, niu, omega] [omega, beta]
查询:
[alpha, delta]
结果:
[alpha, beta, gama, delta] [alpha, epsilon, delta]
所以set元素就是那些独特的,无关的元素.忘记类型和价值观.可以在它们之间测试元素是否相等,就是这样.我正在寻找一种既定的算法(可能有一个名称和科学论文),而不仅仅是现场创建一个.
==原始示例:
例如,假设数据库包含这些集合
[A1, B1, C1, D1], [A2, B2, C1], [A3, D3], [A1, D3, C1]
Run Code Online (Sandbox Code Playgroud)
如果我[A1, C1]用作查询,则应返回这两个集合:
[A1, B1, C1, D1], [A1, D3, C1]
Run Code Online (Sandbox Code Playgroud)
例2:
数据库:
[Gasoline amount: 5L, Distance to Berlin: 240km, car paint: red]
[Distance to Berlin: 240km, car paint: blue, number of car seats: 2]
[number of …Run Code Online (Sandbox Code Playgroud) 从文档:
对于自举样本,使用简单的随机采样.
对于其他数据分割,当y是试图平衡分裂内的类分布的因素时,随机采样在y的水平内完成.
对于数字y,样本基于百分位数分组为组,并且在这些子组内进行采样.
对于createDataPartition,百分位数通过groups参数设置.
我不明白为什么需要这种"平衡"的东西.我认为我从表面上理解它,但任何额外的见解都会非常有用.
我有一个函数(来自之前没有回答的问题),它创建了一个包含n个值的数组.数组的总和等于$ max.
function randomDistinctPartition($n, $max) {
$partition= array();
for ($i = 1; $i < $n; $i++) {
$maxSingleNumber = $max - $n;
$partition[] = $number = rand(1, $maxSingleNumber);
$max -= $number;
}
$partition[] = $max;
return $partition;
}
Run Code Online (Sandbox Code Playgroud)
例如:如果我设置$ n = 4和$ max = 30.那么我应该得到以下内容.
array(5, 7, 10, 8);
Run Code Online (Sandbox Code Playgroud)
但是,此功能不考虑重复项和0.我想要 - 并且一直在努力完成 - 是生成一个具有唯一数字的数组,这些数字加起来我的预定变量$ max.没有重复的数字,没有0和/或负整数.
我是 Azure Cosmos DB 的新手,但我想对以下内容有一个生动的了解:
目前我的理解还很肤浅 -> 具有相同分区键的项目将转到相同的分区进行存储,这可以在系统变大时更好地进行负载平衡。
多谢!
我想知道在机器学习中是否可以接受一个数据集可能多次包含相同的输入,但每次都有另一个(有效!)输出。例如在机器翻译的情况下,输入句子但每次都给出不同的翻译。
一方面,我会说这绝对是可以接受的,因为输出的差异可能会更好地对小的潜在特征进行建模,从而使模型具有更好的泛化能力。另一方面,我担心多次使用相同的输入会使模型偏向于该给定的输入——这意味着第一层(在深度神经网络中)可能在这个输入上“过度拟合”。具体来说,当在测试集中多次看到相同的输入时,这可能会很棘手,但在训练集中从未出现,反之亦然。
假设我的数据存储在对象存储(例如 s3)中,日期时间分区如下:
s3://my-bucket/year=2021/month=01/day=03/SOME-HASH-VAL1.parquet
...
s3://my-bucket/year=2022/month=12/day=31/SOME-HASH-VAL1000.parquet
Run Code Online (Sandbox Code Playgroud)
根据pandas 的 read_parquet api docs,我可以使用filtersarg 来检索数据的子集,如下所示:
pd.read_parquet(
"s3://my-bucket/",
filters=[("year", ">=", 2021)],
)
Run Code Online (Sandbox Code Playgroud)
但是当我想检索特定日期(例如 2021-08-31)之后的数据时,就会出现问题:
pd.read_parquet(
"s3://my-bucket/",
filters=[("year", ">=", 2021), ("month", ">", 8)],
)
Run Code Online (Sandbox Code Playgroud)
这里看起来没有任何问题,但它过滤掉了 2022-01 ~ 2022-07 的数据范围。
可能的解决方案是使用分区存储数据,如下所示:
s3://my-bucket/dt=2021-01-03/SOME-HASH-VAL.parquet
...
s3://my-bucket/dt=2022-12-31/SOME-HASH-VAL.parquet
Run Code Online (Sandbox Code Playgroud)
但随着时间的推移,比如 10 年后,这可能会成为一个问题,因为存储桶将有 365x10 = 3650 个文件夹,这可能会导致读取数据时出现性能问题。
我怎样才能明智地解决这些问题?