gpt4 book ai didi

c++ - 如何在 Waffles C++ API 中预测实例的类

转载 作者:行者123 更新时间:2023-11-28 03:33:11 25 4
gpt4 key购买 nike

我的名字是 titiri,很高兴我找到了要分类的 waffle 库。我认为 waffle 是一个很好的机器学习算法库。我有一个关于华夫饼图书馆的问题。

训练模型后,我想打印一个预测,例如:

我的代码是:

GMatrix Instance(1,8);//instance have 8 real attribute and 
double out;// value in attribute 'class' is nomial
Instance[0][0]=6;
Instance[0][1]=148;
Instance[0][2]=72;
Instance[0][3]=35;
Instance[0][4]=0;
Instance[0][5]=33.6;
Instance[0][6]=0.62;
Instance[0][7]=50;
modell->predict(Instance[0],&out);
cout<<&out;

此代码不工作,不打印任何内容。请帮我!我需要什么来预测实例的类,然后打印它的类,有一个性能良好的“预测”方法来对实例进行分类吗?还是有更好的方法来完成这项工作?

谢谢,开开心心赢

最佳答案

我怀疑您的代码不打印任何内容的原因是您忘记了 endl。 (这是Joachim Pileborg在他的评论中提到的。)

如果您使用的是 Visual Studio,您可能希望在代码末尾添加一个断点(可能在 return 语句上),因为在某些模式下它可以在您看到输出之前关闭您的应用程序,这可以使好像什么都没发生。

例子

下面是一个对我来说效果很好的完整示例。它包括您的实例。它从 2blobs_knn.json 加载一个 K 近邻学习器,然后在其上评估您的实例。您可以将该文件名替换为华夫饼工具生成的任何经过训练的监督模型的名称。

对于我使用的模型,程序打印“1”并退出。

如果您想使用我测试我的代码所用的确切模型(以防您构建学习器的方法有问题),请参阅示例代码之后的部分。

#include <GClasses/GMatrix.h>
#include <GClasses/GHolders.h>
#include <GClasses/GRand.h>
#include <GClasses/GLearner.h>
#include <GClasses/GDom.h>
#include <iostream>
#include <cassert>

using namespace GClasses;
using std::cout; using std::endl;

int main(int argc, char *argv[])
{
//Load my trained learner from a file named 2blobs_knn.json and put
//it in hModel which is a shared-pointer class.
GLearnerLoader ll(GRand::global());
GDom dom;
dom.loadJson("2blobs_knn.json");
Holder<GSupervisedLearner> hModel(ll.loadSupervisedLearner(dom.root()));
assert(hModel.get() != NULL);


//Here is your code
GMatrix Instance(1,8);// Instance has 8 real attributes and one row
double out; // The value in attribute 'class' is nominal
Instance[0][0]=6;
Instance[0][1]=148;
Instance[0][2]=72;
Instance[0][3]=35;
Instance[0][4]=0;
Instance[0][5]=33.6;
Instance[0][6]=0.62;
Instance[0][7]=50;

hModel.get()->predict(Instance[0],&out);
cout << out << endl;
return 0;
}

我在示例中使用的学习器是如何构建的

为了获得学习者,我使用 Matlab(Octave 是免费的模仿者)生成一个 CSV 文件,其中类 0 是一个以 (0,0,0,0,0,0,0,0,0,0, 0,0,0) 和类 1 具有相同的分布,但以 (2,2,2,2,2,2,2,2) 为中心

m=[[randn(200,8);randn(200,8)+2], [repmat(0,200,1);repmat(1,200,1)]];
csvwrite('2blobs.csv',m)

然后,我使用该 CSV 将其转换为 ARFF

waffles_transform import 2blobs.csv > 2blobs.arff

接下来,我将最后一个属性从 @ATTRIBUTE attr8 real 更改为@ATTRIBUTE class {0,1} 在文本编辑器中,所以它是名义上的。

最后,我用

训练了模型
waffles_learn train 2blobs.arff knn -neighbors 10 > 2blobs_knn.json

关于c++ - 如何在 Waffles C++ API 中预测实例的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com