为Encog分析师添加缺失的类

我在进行Encog等边归一化。我的Encog分析师代码如下所示:

 'Analyst Dim analyst = New EncogAnalyst() 'Wizard Dim wizard = New AnalystWizard(analyst) Dim BaseFile As FileInfo = FileUtil.CombinePath(New FileInfo(CSV_EXPORTS_PATH), 'baseFile.csv') wizard.Wizard(BaseFile, True, AnalystFileFormat.DecpntComma)

我的基础文件并不包含索引为8的输入列的所有类别,因此我在进行等边归一化之前,通过添加所有类别来进行归一化,代码如下:

analyst.Script.Normalize.NormalizedFields(8).Classes.Clear()analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_1",0))analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_2",1))analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_3",2))analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_4",3))analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_5",4))analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_6",5))analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_7",6))analyst.Script.Normalize.NormalizedFields(8).Classes.Add(New Encog.Util.Arrayutil.ClassItem("CLASS_8",7))analyst.Script.Normalize.NormalizedFields(8).Output = Falseanalyst.Script.Normalize.NormalizedFields(8).Action = Encog.Util.Arrayutil.NormalizationAction.Equilateral

然而,当我保存我的分析师文件时,

'save the analyst fileanalyst.Save(AnalystFile)

我只得到了基础文件中存在的那些类别,ega文件中的片段如下所示:

[DATA:CLASSES]"field","code","name""TYPE_CLASS","CLASS_3","CLASS_3",1"TYPE_CLASS","CLASS_2","CLASS_2",12"TYPE_CLASS","CLASS_6","CLASS_6",33"TYPE_CLASS","CLASS_8","CLASS_8",1

因此,当我再次加载这个.ega文件时,如果输入包含除CLASS_3、CLASS_2、CLASS_6、CLASS_8之外的其他类别,我会收到一个错误,显示无法确定CLASS_1的类别

我希望Encog分析师能够保存我手动输入的所有类别,而不仅仅是基础文件中存在的那些类别。我该怎么做呢?


回答:

我能够使用如下代码生成额外的[DATA:CLASSES](请原谅我的C#代码,我不是VB程序员):

        analyst.Script.Fields[8].ClassMembers.Clear();        analyst.Script.Fields[8].ClassMembers.Add(new Encog.App.Analyst.Script.AnalystClassItem("CLASS_1", "CLASS_1", 0));        analyst.Script.Fields[8].ClassMembers.Add(new Encog.App.Analyst.Script.AnalystClassItem("CLASS_2", "CLASS_2", 1));        analyst.Script.Fields[8].ClassMembers.Add(new Encog.App.Analyst.Script.AnalystClassItem("CLASS_3", "CLASS_3", 2));        analyst.Script.Fields[8].ClassMembers.Add(new Encog.App.Analyst.Script.AnalystClassItem("CLASS_4", "CLASS_4", 3));

但我认为,如果你使用一个包含缺失值的假行的数据文件会更好。因为你可能会创建更多的数据文件来进行数据的分离(训练、交叉验证、测试),并且还会创建归一化文件,我认为添加一个包含一些额外无意义行的额外文件不会太麻烦。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注