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; }
评论