【问题标题】:R implementation of kohonen SOMs: prediction error due to data type.kohonen SOM 的 R 实现:由于数据类型导致的预测误差。
【发布时间】:2018-12-05 05:23:29
【问题描述】:

我一直在尝试从 https://clarkdatalabs.github.io/soms/SOM_NBA 运行受监督的 kohonen SOM 的示例代码。当我尝试预测测试集数据时,出现以下错误:

pos.prediction <- predict(NBA.SOM3, newdata = NBA.testing)
Error in FUN(X[[i]], ...) : 
Data type not allowed: should be a matrix or a factor

我尝试了 newdata = as.matrix(NBA.testing) 但没有帮助。 as.factor() 也没有。

为什么会这样?我该如何解决这个问题?

【问题讨论】:

  • 你能显示class(NBA.testing)吗?并在您转换为矩阵/因子后重复此操作以检查它是否已正确转换?
  • @RAB > 类(NBA.testing)[1]“矩阵”类(as.matrix(NBA.testing))[1]“矩阵”> typeof(as.matrix(NBA.testing) )) [1] “双”
  • hmm,为什么在最后一个例子中它是双倍的……也许这就是问题所在?
  • @RAB 它是双倍的,因为我使用 typeof() 来提供有关数据类型的附加信息。 double 和 numeric 的意思一样,应该可以接受

标签: r som


【解决方案1】:

您应该为预测函数添加一个参数,即“whatmap”,然后将其值设置为 1。 代码如下:

pos.prediction <- predict(NBA.SOM3, newdata = NBA.testing, whatmap = 1)

要验证预测结果,您可以使用:

table(NBA$Pos[-training_indices], pos.prediction$predictions[[2]], useNA = 'always')

结果可能与教程不同,因为它没有声明使用 set.seed() 函数。 我建议在训练阶段之前的某个地方声明了其中包含任意数字的 set.seed()。 为简单起见,将它放在脚本的最顶部一次,例如

set.seed(12345)

这将保证您下次重新运行脚本时模型的可重现结果。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 2019-10-01
    • 2010-12-07
    • 2014-03-16
    • 2019-01-04
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多