如何从SVD访问U&V矩阵

时间:2018-09-25 10:50:33

标签: r h2o svd sparklyr

我正在尝试通过苏打水和h2o在火花群集中运行h2o.svd。整个过程进展顺利,我可以从h2o命令中获取SVD对象,但只能在下面看到结果。

#Exclude ID column in h2o data frame
my_svd <- h2o.svd(my_h2o_df[,2:138], nv = 10)

my_svd

Model Details:
==============

H2ODimReductionModel: svd
Model ID:  SVD_model_R_1537868492645_2
Singular values:

      sval1     sval2     sval3     sval4     sval5     sval6     sval7
1 80.821459 53.024006 40.153390 38.508806 36.984611 35.530345 33.960273
      sval8     sval9    sval10
1 33.189426 27.904307 27.607862

NULL

基本上,在基数R中,我可以使用svd,它将在模型对象中同时提供$d$u$v的结果。

由于我是h2o工作流程的新手,所以我假设来自h2o对象的结果仅返回$d与基数R进行比较。我如何获得矩阵$u和{{1 }}?

我的环境

  • Azure Databricks云集群,最新稳定版(Scala 2.11)
  • 火花2.3.1
  • SparklyR 0.2.8
  • 苏打水装配_2.11-2.3.13-全部
  • R-h2o 3.20.0.7
  • 闪闪发光0.2.8

1 个答案:

答案 0 :(得分:1)

您可以按以下方式获得D,V和U:

# singular values (D)
my_svd@model$d

# singular vectors (U)
h2o.getFrame(my_svd@model$u_key$name)

# # singular vectors (V):
h2o.getFrame(my_svd@model$v_key$name)