FM的算法理解,以及Windows下安装pyFM,出现microsoft visual c++ 14.0 is required的解决

FM的使用,以及Windows下安装pyFM,出现microsoft visual c++ 14.0 is required的解决


FM具体的算法思路理解可以参考 FM算法理解
本文主要讲解的是pyFM的使用

一级目录

本文主要是作者在学习FM代码使用时候遇到的问题,主要问题有以下几个

  1. microsoft visual c++ 14.0 is required
  2. LINK : fatal error LNK1181: cannot open input file ‘m.lib’

二级目录

有几篇博客是说可以在线安装,但其实对于FM这个库,是没法进行在线安装的,我们需要将源码进行下载,然后修改里面的部分代码,重新进行编译安装就可以

一、问题一

1.在windows下下载pyFM的源码,命令如下

git clone git@github.com:coreylynch/pyFM.git,这是我在anaconda中的虚拟环境中运行的
在

git clone git@github.com:coreylynch/pyFM.git

下载安装之后,如果我们直接运行
python setup.py install 会出现如下错误

error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools

对于这个问题主要有两种解决方案
**

第一种

去python的的支持库中安装对应的whl进行安装
官网是

https://www.lfd.uci.edu/~gohlke/pythonlibs/

然后按crtl+F选择搜索对应的安装包进行安装,不过这种方法并没有彻底解决问题,只是跳过相关的环境进行安装,详细的流程见安装

第二种

解决方案就是安装C++的编译环境,这里我使用的是第二种以便彻底解决问题

我把Microsoft Visual C++ Build Tools的安装使用百度网盘进行分享,
直接解压,然后点击 以管理员身份运行:VisualCppBuildTools_Full.exe
他会自动读取package目录里面的包来安装的。

链接是只需要安装C++部分所需要的包,可以极大减少磁盘空间,提取密码是gryc

按照流程安装即可

二、问题二

接下来安装好了再执行python setup.py install仍然会报错
错误是

LINK : fatal error LNK1181: cannot open input file ‘m.lib’

对于这个问题,我们只需要将源码里面的setup.py中的代码
libraries=[“m”]删除,或者变成 libraries=[]就可以。

在这里插入图片描述
接下来就可以执行代码的编译操作,命令是

python setup.py build

在这里插入图片描述会出现如下的提示
在这里插入图片描述

紧接着执行python setup.py install
在这里插入图片描述

就会出现如下的提示

在这里插入图片描述
至此,就可以在我们的anaconda的虚拟环境中使用我们编译好的pyfm包

使用官网的例子进行测试,发现没有错误

from pyfm import pylibfm
from sklearn.feature_extraction import DictVectorizer
import numpy as np

train = [
    {"user": "1", "item": "5", "age": 19},
    {"user": "2", "item": "43", "age": 33},
    {"user": "3", "item": "20", "age": 55},
    {"user": "4", "item": "10", "age": 20},
]
v = DictVectorizer()
X = v.fit_transform(train)
print(X.toarray())
# [[ 19.   0.   0.   0.   1.   1.   0.   0.   0.]
#  [ 33.   0.   0.   1.   0.   0.   1.   0.   0.]
# [ 55.   0.   1.   0.   0.   0.   0.   1.   0.]
# [ 20.   1.   0.   0.   0.   0.   0.   0.   1.]]

y = np.repeat(1.0, X.shape[0])
fm = pylibfm.FM()
fm.fit(X, y)
fm.predict(v.transform({"user": "1", "item": "10", "age": 24}))

结果如下所示,
在这里插入图片描述
接下来就可以对代码进行调试,阅读源码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值