我正在进行等边正常化。我对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 = False
analyst.Script.Normalize.NormalizedFields(8).Action = Encog.Util.Arrayutil.NormalizationAction.Equilateral
但是,当我保存我的分析师文件时,
'save the analyst file
analyst.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分析师保存我手动提供的所有类,而不仅仅是基本文件中的那些类。我该怎么做?
答案 0 :(得分:1)
我能够使用这样的代码生成额外的[DATA:CLASSES](parden我的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));
但是我认为如果您使用带有假行的数据文件来丢失值,那将会好得多。既然您可能会创建更多数据文件来进行一些数据隔离(培训,交叉验证,测试),并且还创建规范化文件,我不认为添加额外的文件有一些额外的无意义的行会太突兀了。