栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

会出现如下的提示

紧接着执行pip 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}))

结果如下所示,

接下来就可以对代码进行调试,阅读源码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号