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. 设计 无状态的类,而不是 stateful

    0down votefavorite   I have created a Database Abstraction Layer over PDO to refrain from creating m ...

  2. ibatis的动态sql

    1.介绍 <select id="getUsers" parameterClass="user" resultMap="get-user-res ...

  3. Mysql update语句赋值嵌套与在表列中数据后面增加数据

    1.Mysql update语句赋值嵌套select  点击(此处)折叠或打开 update a set col=(select col from a where id='5') where id&g ...

  4. 关于Spring3报org.aopalliance.intercept.MethodInterceptor错的问题解决方法_JavaLeader_新浪博客

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  5. Cordova3+sencha touch2.x 环境搭建

    1.安装 nodejs 2.安装 cordova: npm install -g cordova 3.创建一个工程: cordova create MyApp com.example.MyApp My ...

  6. STL中的所有算法(70个)

    STL中的所有算法(70个)----9种类型(略有修改by crazyhacking) 参考自: http://www.cppblog.com/mzty/archive/2007/03/14/1981 ...

  7. eclipse注释模板设置(未整理)

    Window --> Java --> Code Style --> Code Templates --> Comments --> types --> Edit  ...

  8. STM8的中断系统以及外部中断详解

    STM8具有最多32的中断系统,在中断的处理上类似于cortexm系列的芯片,首先是每个中断的向量都是固化在系统内部的,用户需要向相应的中断向量flash位置写入中断处理函数,其二,每个中断向量都具有 ...

  9. Run Loop简介

    做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情.想学好一门语言还是需要深层次的了解它,这样才能在使用的时候得心应手,出 ...

  10. BZOJ 1101 [POI2007]Zap ——Dirichlet积

    [题目分析] Dirichlet积+莫比乌斯函数. 对于莫比乌斯函数直接筛出处理前缀和. 对于后面向下取整的部分,可以分成sqrt(n)+sqrt(m)部分分别计算 学习了一下线性筛法. 积性函数可以 ...