TapkeeC++ 模版库

联合创作 · 2023-09-28 16:26

Tapkee 是一个 C++ 模版库,提供了降维操作功能。Tapkee起源于GSoC 2011期间开发的代码 ,它是Shogun机器学习工具箱的一部分。该项目的目标是为减少维度提供高效灵活的独立库,该库可轻松集成到现有代码库中。

Tapkee利用有效的Eigen3线性代数库的功能,还可以选择使用ARPACK特征求解器。该库使用CoverTree和VP-tree数据结构来计算最近的邻居。为了获得更大的灵活性,开发团队提供了一个回调接口,该接口将降维算法与数据表示和存储方案分离。

一个最简单的示例:

#include <tapkee/tapkee.hpp>
#include <tapkee/callbacks/dummy_callbacks.hpp>

using namespace std;
using namespace tapkee;

struct MyDistanceCallback
{
  ScalarType distance(IndexType l, IndexType r) { return abs(l-r); } 
}; 

int main(int argc, const char** argv)
{
  const int N = 100;
  vector<IndexType> indices(N);
  for (int i=0; i<N; i++) indices[i] = i;

  MyDistanceCallback d;

  TapkeeOutput output = tapkee::initialize() 
     .withParameters((method=MultidimensionalScaling,target_dimension=1))
     .withDistance(d)
     .embedUsing(indices);

  cout << output.embedding.transpose() << endl;
  return 0;
}
浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报