首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复HPCC ECL学习树错误:对象‘type’没有名为't_Work-Item‘的成员?

如何修复HPCC ECL学习树错误:对象‘type’没有名为't_Work-Item‘的成员?
EN

Stack Overflow用户
提问于 2019-04-19 21:09:20
回答 1查看 110关注 0票数 1

我试图使用HPCC ML_Core和LearningTree库对一些数据进行分类。数据都是数字的,而因变量是一个无符号整数。无论我做什么,我都会得到相同的错误"Object‘type’没有一个名为't_Work_Item‘的成员

错误的位置甚至不在我的文件中。它在一个名为RF_Base.ecl的文件中。

我想不出如何修正这个错误。

我使用本教程设置代码:https://hpccsystems.com/blog/HPCC-Sytems-Machine-Learning

以下是我得到的错误消息:

图像链接:https://i.imgur.com/4WxElRJ.jpg

我已经将我正在处理的文件移到了我安装的包中的同一个文件中,看看是否将我的文件放在与库相同的位置上,但它没有帮助。

错误发生在第62行: myLearnerC := LT.ClassificationForest();

代码语言:javascript
复制
IMPORT ML_Core, std;
IMPORT ML_Core.Discretize;
IMPORT LearningTrees AS LT;

articles_layout := RECORD
    INTEGER articleID;
    UNSIGNED INTEGER sectionName; //dependent variable I'm trying to classify
    INTEGER newsDesk; //newsDesk to key9 are independent variables I'm using to classify the section name
    INTEGER key1;
    INTEGER key2;
    INTEGER key3;
    INTEGER key4;
    INTEGER key5;
    INTEGER key6;
    INTEGER key7;
    INTEGER key8;
    INTEGER key9; //not all key attributes have data, some are empty
END;

all_articles := DATASET('~online::hjj::parsed_articles_reordered', articles_layout, CSV) : PERSIST('online::hjj::all_articles');
//all_articles[1..40];

known_articles := all_articles(sectionName != 25);
//known_articles[1..40];

unknown_articles := all_articles(sectionName = 25) : PERSIST('online::hjj::unknown_articles');
//unknown_articles[1..40];


articles_layout_ext := RECORD(articles_layout)
  UNSIGNED4 RND;
END;

articles_ext := PROJECT(known_articles, TRANSFORM(articles_layout_ext, SELF.rnd := RANDOM(), SELF := LEFT));

articles_shuffled := SORT(articles_ext, rnd);

training_articles := PROJECT(articles_shuffled[1..2330], articles_layout) : PERSIST('online:hjj::training_articles');
//training_articles[1..30];

testing_articles := PROJECT(articles_shuffled[2331..2923], articles_layout) : PERSIST('online:hjj::testing_articles');
//testing_articles[1..30];

ML_Core.ToField(training_articles, training_articles_NF);
training_articles_NF[1..50];

ML_Core.ToField(testing_articles, testing_articles_NF);
testing_articles_NF[1..50];

myIndTrainDataNF := training_articles_NF(number > 1);

myDepTrainDataNF := PROJECT(training_articles_NF(number = 1), TRANSFORM(RECORDOF(LEFT), SELF.number := 1, SELF := LEFT));

myIndTestDataNF := training_articles_NF(number > 1);

myDepTestDataNF := PROJECT(testing_articles_NF(number = 1), TRANSFORM(RECORDOF(LEFT), SELF.number := 1, SELF := LEFT));

myDepTrainDataDF := Discretize.ByRounding(myDepTrainDataNF);

myDepTestDataDF := Discretize.ByRounding(myDepTestDataNF);

//PROBLEM STATEMENT HERE
myLearnerC := LT.ClassificationForest();

myModelC := myLearnerC.GetModel(myIndTrainDataNF, myDepTrainDataDF);

predictedClasses := myLearnerC.Classify(myModelC, myIndTestDataNF) : PERSIST('online::hjj::predicted_classes');

assessmentC := ML_Core.Analysis.Classification.Accuracy(predictedClasses, myDepTestDataDF) : PERSIST('online::hjj::assessment');

错误出现在RF_Base.ecl文件的第14行。

代码语言:javascript
复制
IMPORT $.^ AS LT;
IMPORT LT.Internal AS int;
IMPORT LT.LT_Types as Types;
IMPORT ML_Core as ML;
IMPORT ML.Types AS CTypes;
IMPORT std.system.Thorlib;
IMPORT ML_Core.ModelOps2;

GenField := Types.GenField;
ModelStats := Types.ModelStats;

//ERROR HERE
t_Work_Item := CTypes.t_Work_Item;

t_Count := CTypes.t_Count;
t_RecordId := CTypes.t_RecordID;
t_FieldNumber := CTypes.t_FieldNumber;
t_TreeId := t_FieldNumber;
Layout_Model := CTypes.Layout_Model;
wiInfo := Types.wiInfo;
TreeNodeDat := Types.TreeNodeDat;
NumericField := CTypes.NumericField;
DiscreteField := CTypes.DiscreteField;
Layout_Model2 := CTypes.Layout_Model2;
FeatureImportanceRec := Types.FeatureImportanceRec;
nfNull := DATASET([], NumericField);

真的不知道如何解决这个问题。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 14:35:18

这里发生了什么?

1-您的代码失败是因为LearningTrees (LT)失败:

代码语言:javascript
复制
IMPORT LearningTrees AS LT;
[...]
myLearnerC := LT.ClassificationForest();

2- LearningTrees使用不构建的RF_Base.ecl,因为它有错误。

3- RF_Base.ecl文件在第14、19和24行中有3个语法错误.所以它不是建造的。

解决方案:"Fix RF_Base.ecl和一切都应该工作“。

说起来容易,做起来难。

我克隆了:

  • ML_Core
  • ecl-ml
  • LearningTrees

...and RF_Base.ecl和works。

你应该试试什么?

  • 检查您是否克隆了所有3个库
  • 检查一下和我一样的路:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55767894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档