TapkeeC++ 模版库
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;
}评论
