【问题标题】:dlib krr_trainer gives error on multidimensional datadlib krr_trainer 在多维数据上给出错误
【发布时间】:2019-01-07 11:30:03
【问题描述】:

我正在尝试 dlib 来解决问题。给定房屋面积和当地树木数量,提供房屋价格。我们希望使用 krr 训练器预测给定区域的房屋价格,并且没有树木

area , noOfTrees, priceOFHouse
100 , 10 , 400
100 ,50, 2000
200 , 1,200
.... lots more

我打算使用核岭回归

typedef matrix<double, 2, 1> sample_type;
typedef radial_basis_kernel<sample_type> kernel_type;
krr_trainer<kernel_type> trainer;

// i took trainign data and put htose data in 2 vectors 
//  std::vector<std::vector<double> > feactureVector;
//  std::vector<double> resultVector;
populateTrainigData(feactureVector, resultVector) ; 
// so featurevector[0] is {100,10} resultvector[0] is 400 
decision_function<kernel_type>  test = trainer.train(feactureVector, resultVector);

sample_type m;
m(0, 0) = 100; // area of house is 100 
m(1, 0) = 25; // no of treess in neighbourhood is 25 

double result = test(m);

decision_function&lt;kernel_type&gt; test 行,它给出了编译错误。

d:\dlib-19.15\dlib\svm\krr_trainer.h(300): error C2664: 'const dlib::matrix<double,0,1,dlib::default_memory_manager,dlib::row_major_layout> &dlib::empirical_kernel_map<dlib::radial_basis_kernel<sample_type>>::project(const dlib::matrix<T,2,1,dlib::default_memory_manager,dlib::row_major_layout> &,double &) const': cannot convert argument 1 from 'const std::vector<double,std::allocator<_Ty>>' to 'const dlib::matrix<T,2,1,dlib::default_memory_manager,dlib::row_major_layout> &'
1> 

有人能指出我可以解决这个问题的正确方向吗,因为 dlib 网站上的示例仅显示了一个维度示例。我将其用作参考指南,错误和系统对我来说很奇怪。

【问题讨论】:

  • 删除了 ml 标签,它是为编程语言 ML 设计的。

标签: c++ dlib


【解决方案1】:

它不支持这样做。您应该为每个输出调用一次 .train() 。也就是说,为每个输出变量训练单独的预测器。

【讨论】:

  • 你的意思是对于训练集中的每一行说 1000 行,我们将调用 train 方法 1000 次。先生,然后如何更新训练对象,即返回的决策者?因为我的输出只有 1,即房屋成本和特征是面积而不是树木
  • 我的意思是像 dlib 中的 krr_example 程序一样使用它。
  • 先生,您有上面的链接吗?我最初指的是dlib.net/krr_regression_ex.cpp.html,但它是一维的。
  • 我说的就是这个。一次训练一个维度。
  • 哦..先生,所以你的意思是我将有 decision_function test1 和 decision_function test2 ;对于 2 个特征,即面积和树木数量。然后我也有 2 个结果,即 double cost1 = test1(m1) 和 double cost2= test2(m2) ;我将如何获得最终成本..
【解决方案2】:

我认为您因为这行而出错:

std::vector<std::vector<double> > feactureVector;

您的特征应该是sample_type 的向量,如下所示:

std::vector< sample_type > feactureVector;

就像这个例子:http://dlib.net/krr_regression_ex.cpp.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多