【发布时间】:2020-02-13 12:16:48
【问题描述】:
我正在尝试使用Accord.net library 来构建库支持的几种机器学习算法的测试方法。
我遇到的一个问题是,当我尝试编码我的字符串数据时,尽管文档另有说明,但 Codification 类似乎无法处理任何不是字符串的数据表列。
Codification codebook = new Codification(fulldata, AllAttributeNames);
我将 fulldata 称为数据表的那一行,我尝试包含 Int32 类型和 Double 类型的列,并且 Codification 类抛出了一个错误,说它无法将它们转换为 String 类型。
“System.InvalidCastException:'无法将'System.Double'类型的对象转换为'System.String'类型。'”
编辑:事实证明,这个错误是因为编码系统只能在对整个表进行编码时处理备用数据类型。我想我可以看到这里的逻辑,虽然我更喜欢更好的错误,或者方法更聪明。
我现在遇到了另一个与此相关的问题。将我的代码更改为此后:
Codification codebook = new Codification(fulldata);
然后我 learning.Learn(inputs, outputs) 我的算法并想使用新训练的算法。所以下一步是获取一堆测试数据,确保它与码本编码匹配,然后通过算法发送。不幸的是,当我尝试使用
int[][] testinput = codebook.Transform(testData, inputColumnNameArray);
它声称找不到要转换的映射而崩溃。它参考码本正确未映射到新值的整数列来执行此操作。所以现在看来这个 Transform 方法不能处理非字符串列,我还没有发现它的重载可以,即使documentation 表明它应该能够处理这个。
有没有人知道如何在不手动构建整个 int[][] testinput 数组的情况下解决这个问题?
【问题讨论】:
标签: accord.net