TapkeeC++ 模版庫(kù)
Tapkee 是一個(gè) C++ 模版庫(kù),提供了降維操作功能。Tapkee起源于GSoC 2011期間開(kāi)發(fā)的代碼 ,它是Shogun機(jī)器學(xué)習(xí)工具箱的一部分。該項(xiàng)目的目標(biāo)是為減少維度提供高效靈活的獨(dú)立庫(kù),該庫(kù)可輕松集成到現(xiàn)有代碼庫(kù)中。
Tapkee利用有效的Eigen3線(xiàn)性代數(shù)庫(kù)的功能,還可以選擇使用ARPACK特征求解器。該庫(kù)使用CoverTree和VP-tree數(shù)據(jù)結(jié)構(gòu)來(lái)計(jì)算最近的鄰居。為了獲得更大的靈活性,開(kāi)發(fā)團(tuán)隊(duì)提供了一個(gè)回調(diào)接口,該接口將降維算法與數(shù)據(jù)表示和存儲(chǔ)方案分離。
一個(gè)最簡(jiǎn)單的示例:
#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;
}評(píng)論
圖片
表情
