我使用Accord.MachineLearning v3.8.0中的决策树。
在DecisionTreeView中训练后查看树工作正常。但是,如果我使用
序列化树Accord.IO.Serializer.Save(tree, fileName);
然后用
对其进行反序列化DecisionTree tree = Accord.IO.Serializer.Load<DecisionTree>(fileName);
然后尝试在DecisionTreeView
中将其可视化decisionTreeView.TreeSource = tree;
我会得到
对象引用未设置为对象的实例。
at Accord.MachineLearning.DecisionTrees.DecisionNode.toString(Codification&gt; codebook) 在Accord.MachineLearning.DecisionTrees.DecisionNode.ToString() 在Accord.Controls.DecisionTreeView.convert(DecisionNode节点) 在Accord.Controls.DecisionTreeView.convert(DecisionNode节点) at Accord.Controls.DecisionTreeView.update() at Accord.Controls.DecisionTreeView.set_TreeSource(DecisionTree value)
答案 0 :(得分:2)
找到修复程序。出于某种原因,DecisionNode:在序列化/反序列化DecisionTree时失去Owner属性值。在解除分区之后,迭代DecisionTree的DecisionNode:并将每个DecisionNode的Owner设置为DecisionTree本身。