libMF是林智仁老师开发的一个用于推荐系统的矩阵分解库,下载地址:libMF

测试用的数据集是MovieLen,一个给电影评分的数据集,下载在此:ML

最近在阅读libMF的源代码,并且准备开发其Matlab接口,在此做做笔记。

我的开发环境是在Win8-64bit + Visual Studio 2013下,由于林老师写的程序有很好的跨平台特性,在Linux下开发也是OK的。

首先要解决的是VS2013下编译的大坑:

1,由于矩阵分解MF(mf.cpp和mf.h)是独立于train和predict的一个库,所以单独放到一个文件夹mf里面,所以要在Visual Studio的工程属性->配置属性->VC++目录->包含目录中间添加这个文件夹。(这不算坑)

2,创建工程的时候不要选择预编译头,如果不慎选了在工程属性->配置属性->C/C++->预编译头里面关闭预编译头的选项。

3,林智仁老师用的一些函数VS家认为是不安全的,默认编译不通过,在工程属性->配置属性->C/C++->预处理器->预处理器定义中添加这么两行:

_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS

4,在修改配置的时候属性页最上面的配置和平台选为所有配置和所有平台,否则要一次次改心都累了。

好了,至此可以编译通过了,不过需要注意的是,Debug的版本和Release的版本速度是天差地别的,调试的时候通用Debug,使用的时候一定使用Release x64发布。

其实想要使用是很简单的,林老师编译好了一个针对Win的版本,不过如果要写接口或者深入理解这个程序还是首先需要编译通过,待会儿才可以查看各种数据结构和调用堆栈。

以上。

libMF阅读记录(一):首先要编译通过的更多相关文章

  1. x264阅读记录-1

    x264阅读记录-1 采用x264版本是x264-snapshot-20060316-2245. 1. main函数 x264的main函数位于x264.c中,下面是main函数调用情况: (1)_s ...

  2. EventBus源码解析 源码阅读记录

    EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInst ...

  3. Elasticsearch6.3.2启动过程源码阅读记录

    Elasticsearch6.3.2启动过程源码阅读记录 网上有很多关于es的源码分析,觉得自己技术深度还不够,所以这些文章只是看源码过程中的一个笔记,谈不上分析. 整个启动过程以类名.方法名,按顺序 ...

  4. x264阅读记录-2

    x264阅读记录-2 7. x264_encoder_encode函数-1 查看该函数代码(Encoder.c文件)可以发现,该函数中注释很详细,对编码的整个步骤展示的也相对比较清晰. 在查看具体的代 ...

  5. 《Javascript高级程序设计》阅读记录(七):第七章

    <Javascript高级程序设计>中,2-7章中已经涵盖了大部分精华内容,所以摘录到博客中,方便随时回忆.本系列基本完成,之后的章节,可能看情况进行摘录. 这个系列以往文字地址: < ...

  6. 《Javascript高级程序设计》阅读记录(六):第六章 下

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  7. 《Javascript高级程序设计》阅读记录(五):第六章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 <Javascript ...

  8. 《Javascript高级程序设计》阅读记录(三):第五章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读< ...

  9. 《Javascript高级程序设计》阅读记录(一):第二、三章

    <Javascript高级程序设计>阅读记录(一) 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释 ...

随机推荐

  1. 微信小程序tips集合:无法输入文字/随时查看页面/元素审查/点击事件/数据绑定

    1:编辑文档无法输入文字 出现这种情况一般是因为之前编辑的文档未保存,所有在其他文档输入的时候会自动输入到未保存的文档中,在文档暂时编辑完毕后要ctrl+s随手保存,不然会出现无法打字情况 2: 随时 ...

  2. 函数之DisString

    DocStringsPython有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings .DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用 ...

  3. Extjs5.0中的新特性

    We are excited that Ext JS 5 is now available! Ext JS 5 introduces many new and exciting improvement ...

  4. 15、手把手教你Extjs5(十五)各种Grid列的自定义渲染

    Grid各列已经能够展示出来了.列的类型包括字符型,整型,浮点型,货币型,百分比型,日期型和布尔型,我自定义了各种类型的渲染样式: 1.整型:标题栏居中,数值靠右显示,正数颜色为蓝色,负数颜色为红色, ...

  5. mysql----ERROR 1040 (HY000): Too many connections

    http://gwokae.mewggle.com/wordpress/index.php/archives/683 查看最大链接 mysql -h alg-db14 -u bfdroot -pqia ...

  6. angular中的$http配置和参数

    依赖:$httpBackend $cacheFactory $rootScope $q $injector 使用:$http(config); 参数: method:字符串,请求方法. url:字符串 ...

  7. NSDate详解及获取当前时间等常用操作

    NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. 创建或初始化可用以下方法 用于创建NSDate实例的类方法有 ...

  8. selenium IE 浏览器驱动下载地方

    download: http://selenium-release.storage.googleapis.com/index.html

  9. .net面试题【持续更新.....】

    1.C#中readonly和const的区别? 2.C#中的排序继承自哪个接口?Icompare 3.阐述单点登录的实现原理? 4.C#中property和Attribute的区别? 5.Datase ...

  10. iOS开发中视图控制器ViewControllers之间的数据传递

    iOS开发中视图控制器ViewControllers之间的数据传递 这里我们用一个demo来说明ios是如何在视图控制器之间传递重要的参数的.本文先从手写UI来讨论,在下一篇文章中讨论在storybo ...