小编Jam*_*son的帖子

我可以使用任意指标来搜索KD树吗?

我刚刚完成了一个用于快速最近邻搜索的kd树.我有兴趣玩欧几里德距离以外的不同距离指标.我对kd-tree的理解是,如果度量是非欧几里德,那么快速的kd-tree搜索不能保证给出精确的搜索,这意味着如果我想尝试我可能需要实现一个新的数据结构和搜索算法我的搜索新指标.

我有两个问题:

  1. 使用kd树永久地将我绑定到欧几里德距离吗?
  2. 如果是这样,我应该尝试使用哪种其他类型的算法来处理任意指标?我没有太多时间来实现许多不同的数据结构,但我正在考虑的其他结构包括覆盖树vp树.

algorithm math search machine-learning data-structures

9
推荐指数
1
解决办法
3143
查看次数

了解有关解析的更多信息

自1999年以来,我一直在编程工作和乐趣.我想学习新东西,最近我一直专注于解析,因为我的工作很大一部分是阅读,整合和分析数据.如果开销足够低,我认为我可以用非常简单的特定于域的语言表达大量重复性任务.我对这个问题有几个问题.

  1. 我当前的大多数解析代码都没有定义正式的语法.我通常用我选择的语言一起破解一些东西,因为这很简单,我知道如何做,我可以非常快地编写代码.对于与我合作的其他人来说,维护也很容易.与大多数程序员用来编写解析器的黑客相比,定义语法和生成真正的解析器(与ANTLRYACC一样)解析事物的优点和缺点是什么?
  2. 在C++,Perl和Ruby中编写基于语法的解析器的最佳解析器生成工具是什么?我已经看过ANTLR并且没有发现将ANTLRv3与C++目标一起使用的情况,但其他方面看起来很有趣.我应该阅读的其他与ANTLR类似的工具是什么?
  3. 有兴趣学习更多解析的规范书籍和文章是什么?不幸的是,编译器课程不是我教育的一部分,因此非常欢迎基础材料.我听过关于龙书的好消息,但还有什么呢?

dsl parsing

9
推荐指数
1
解决办法
655
查看次数

计算机科学中"地图"的起源

在计算机科学中,字图有两种定义.第一个是关联数组,一种容器类型,它将一种类型的值映射到另一种类型的值.一个例子是STL地图.第二个定义来自函数式编程,其中map是一个获取列表和函数的函数,按顺序将函数应用于列表的所有元素,并返回结果列表.

地图的不同定义的起源是什么?我猜测第二个定义可能来自McCarthy LISPmapcar函数,但我不确定这是否来自另一个有用的.第一个定义对我来说很直观,但我不确定它的来源.

history dictionary associative-array terminology

9
推荐指数
2
解决办法
5993
查看次数

如何迭代R中的数据帧列表

我在R中有一个包含几个数据框的列表.我想迭代数据帧并计算数据帧中值的最小值/最大值.这是我现在的代码:

firstname = names(dats)[1]
xlim = c( min( dats[[firstname]][,xlab] ), max( dats[[firstname]][,xlab] ) )
for ( name in names(dats) ) {
   xlim = c( min(xlim[1],dats[[name]][,xlab]), max(xlim[2],dats[[name]][,xlab]) )
} 
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很难看,因为它需要很多代码来做一些非常简单的事情.在R中有更典型的方法吗?

coding-style r dataframe

9
推荐指数
1
解决办法
1876
查看次数

关于const成员函数

我遇到了const成员函数的两个解释

class A{
  public:
  ...
  void f() const {}
  ...
}
Run Code Online (Sandbox Code Playgroud)
  1. 这意味着它只能访问不变成员;
  2. 这意味着它不会修改任何成员;

我认为第二个是正确的.但为什么第一个出来呢?有什么需要澄清的吗?

谢谢!

c++ const const-correctness

8
推荐指数
2
解决办法
6955
查看次数

统计问题:R中的核平滑

我有这种形式的数据:

 x    y
 1    0.19
 2    0.26 
 3    0.40
 4    0.58
 5    0.59
 6    1.24
 7    0.68
 8    0.60
 9    1.12
10    0.80
11    1.20
12    1.17
13    0.39
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码绘制x与y的内核平滑密度估计值:

   smoothed = ksmooth( d$resi, d$score, bandwidth = 6 )
   plot( smoothed )
Run Code Online (Sandbox Code Playgroud)

我只想要一个x与平滑(y)值的关系图,即## Heading ##

但是,ksmooth文档表明这不是最好的内核平滑包:

该功能纯粹是为了与S兼容而实现的,尽管它远不如S功能那么慢.其他包中提供了更好的内核平滑器.

什么其他内核平滑器更好,哪些可以找到这些平滑器?

statistics r

8
推荐指数
1
解决办法
5726
查看次数

R:如何使用分布组合拟合大型数据集?

为了使实数值(x)的数据集与一个分布拟合,我们可以使用MASS,如下所示:gammaStudent t分布:

fitdistr(x, "gamma")
Run Code Online (Sandbox Code Playgroud)

要么

fitdistr(x2, "t")
Run Code Online (Sandbox Code Playgroud)

如果我认为我的数据集应该符合gamma和t分布的总和,该怎么办?

P(X) = Gamma(x) + t(x)
Run Code Online (Sandbox Code Playgroud)

我可以使用R中的最大似然拟合来拟合概率分布混合的参数吗?

statistics r distribution

5
推荐指数
1
解决办法
2391
查看次数

循环遍历两个数组,删除perl中的重叠

我有两组范围,由[start,stop]值表示.一些范围重叠,这意味着一个范围的开始位于另一个范围的[开始,停止]之间.我想制作一组没有这种重叠的新范围,并且不包括范围内的任何新值.

范围看起来像这样:

@starts  @ends
      5    108 
      5    187
     44    187
     44    229 
     44    236 
     64    236 
    104    236
    580    644
    632    770
Run Code Online (Sandbox Code Playgroud)

我期望的输出是这样的:

@starts  @ends
      5    236
    580    770
Run Code Online (Sandbox Code Playgroud)

这是因为前七个范围与5 => 236的间隔重叠,后两个与632 => 770的间隔重叠.

这是我试过的代码:

$fix = 0;
foreach (@ends) {  
    if ($starts[$fix + 1] < $ends[$fix]) {
        splice(@ends, $fix, $fix);
        splice(@starts, $fix + 1, $fix + 1);
    } else {
        $fix += 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以自己打印出这些值,我只需要帮助合并算法.

arrays algorithm perl merge intervals

5
推荐指数
1
解决办法
1111
查看次数

Perl中最小的非零,正浮点数是多少?

我在Perl中有一个程序可以处理偶尔会非常小的概率.由于舍入误差,有时其中一个概率为零.我想检查以下内容:

use constant TINY_FLOAT => 1e-200;
my $prob = calculate_prob();
if ( $prob == 0 ) {
    $prob = TINY_FLOAT;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我实际上看到Perl生成的数字小于1e-200(我刚看到8.14e-314飞过).对于我的应用程序,我可以更改calculate_prob(),以便它返回TINY_FLOAT的最大值和实际概率,但这让我对如何在Perl中处理浮点数感到好奇.

Perl中最小的正浮点值是多少?它是平台依赖的吗?如果有,是否有一个快速程序,我可以用来在我的机器上找出它?

floating-point perl numerical

4
推荐指数
3
解决办法
3450
查看次数

Perl中浮点等价的单元测试

我正在使用Test :: More在Perl中编写单元测试.我已经习惯了cxxunit的一些构造,特别是我缺少TS_ASSERT_DELTA.对于那些没有看过TS_ASSERT_DELTA的人,它看起来像这样:

TS_ASSERT_DELTA( 1.0, 1.1, 0.5 );   // this test will pass
TS_ASSERT_DELTA( 1.0, 1.1, 1e-10 ); // this test will fail
Run Code Online (Sandbox Code Playgroud)

是否有Perl等效的浮点比较?或者每个人都为此写了一个明显的功能?我正在使用这个:

sub compare_float_delta {
    my $n1    = shift;
    my $n2    = shift;
    my $delta = shift;
    return( abs($n1-$n2) < $delta );
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是测试框架应该提供的东西.这个想法是正确的,还是我应该调用float_compare_delta继续我的生活?

testing floating-point perl unit-testing

4
推荐指数
2
解决办法
498
查看次数