我在R中有一个稀疏矩阵。使用包 libFMexe 我可以将矩阵转换为正确的libFM格式。我得到了
head(libFMmat)
[1] "1 0:1 5000:1 33736:1 33737:1 33738:1 33739:1 33740:1 33741:1
33742:1 33743:1 33744:1 33745:1 33746:1 33747:1"
[2] "1 0:1 5001:1 33735:1 33737:1 33738:1 33739:1 33740:1 33741:1
33742:1 33743:1 33744:1 33745:1 33746:1 33747:1"
[3] "1 0:1 5002:1 33735:1 33736:1 33738:1 33739:1 33740:1 33741:1
33742:1 33743:1 33744:1 33745:1 33746:1 33747:1"
[4] "1 0:1 5003:1 33735:1 33736:1 33737:1 33739:1 33740:1 33741:1
33742:1 33743:1 33744:1 33745:1 33746:1 33747:1"
[5] "1 0:1 5004:1 33735:1 33736:1 33737:1 33738:1 33740:1 33741:1
33742:1 33743:1 33744:1 33745:1 33746:1 33747:1"
[6] "1 0:1 5005:1 33735:1 33736:1 33737:1 33738:1 33739:1 33741:1
33742:1 33743:1 33744:1 33745:1 33746:1 33747:1"
根据我的数据和我想要的格式是正确的。现在我想对这些数据使用libFM。
首先我尝试使用
libFM(libFMmat_train, libFMmat_test)
但我得到
sh: libFM: command not found
Error in system(libfm_exe, intern = TRUE) : error in running command
所以现在我想在我的终端上做这件事。我用
save(libFMmat_train, file= "/.../libFMmat_train.libfm")
但是当我对这些数据运行libFM时,我得到了
Loading train...
has x = 0
has xt = 1
ERROR: cannot parse line "??=???U??;p;?x"?k??Kb??X??? ?ƭV08?P0r?
@ոS.$%F$JZ(i??) I73?f?D4?qG?lG????[????5?n??<??{??ֵ?u]????ӿ????'>???o???
w????c?ϻO??O??????_~??????W?̡?,???:??}???|???7~??????Q/?C?(???̣ƴ>K?a?
ϔ???)?g?u???a?????ߕ9??}
??;?????qL??>???s???????_l???_??\Kܿ???s5?i?[cl??1?_W???5?
>???u???ge__(??ʈQ????c?y?}?u?????f??b֟co?{ZJs???h=?V?{??L?????ܟ?<????j??
q??_??\R,?S????^???ܿ>??????}????^rߟ???Q?:?^_???K\_??{???q??????3??????
R.a??^uaIXS?_X???1?bϽ??????????~o}??^????????N~t}a?:?iؿ?k???Ӿ???s??Y???
{J)v=?0????K?z?m
}???:???H9??,|?s}??????5??<?cZ?Y???????om???=???Ǖί?1???cLC????+k!?9???
ޖJ~[|oW??"?ף?u!?Ԧ????u????h?Xߐs?" at character
所以我的问题是 - 如何以正确的格式将R字符文件保存为.libfm文件以便我可以使用libFM?
答案 0 :(得分:0)
我自己解决了,文件已经是正确的文本格式,并且不需要转换为.libfm格式。所以我只是使用(在另一个stackoverflow线程中找到)将我的角色向量libFMmat转换为libFM格式
fileConn <- file("output.txt")
writeLines(libFMmat, fileConn)
close(fileConn)
获取可与libFM一起使用的.txt文件。