本安装文档主要翻译整理自 Prophet Installation 官方安装文档。
如果是 Windows 系统,需要按照 rstan 提供的教程给 R 安装一个编译器。其中,最为关键的一步就是先安装 Rtools 。
1. 安装 R 和 RStudio
2. 安装 Rtools ,确保其安装目录已添加至系统环境变量中。
假如 Rtools 安装在 C 盘,则运行Sys.getenv('PATH')
后,输出应包含如下所示的结果(注:原文教程中结果为”C:\Rtools\bin;C:\Rtools\gcc-4.6.3\bin;”);运行system('g++ -v')
和system('where make')
后输出结果正常,如下所示。
否则,请确保 Rtools 安装目录已添加至系统环境变量中。
1 2 3 4 5 6 7 8 9 |
> Sys.getenv('PATH') C:\\Rtools\\bin;C:\\Rtools\\mingw_64\\bin; > system('g++ -v') Using built-in specs. COLLECT_GCC=C:\Rtools\mingw_64\bin\G__~1.EXE # 已省略部分输出结果 gcc version 4.9.3 (x86_64-posix-seh, Built by MinGW-W64 project) > system('where make') C:\Rtools\bin\make.exe |
3. 配置
非必须操作,不会影响 RStan 正常工作,但强烈推荐。
1 2 3 4 5 6 7 8 |
dotR <- file.path(Sys.getenv("HOME"), ".R") if (!file.exists(dotR)) dir.create(dotR) M <- file.path(dotR, "Makevars") if (!file.exists(M)) file.create(M) cat("\nCXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function", file = M, sep = "\n", append = TRUE) |
1 2 3 |
cat('Sys.setenv(BINPREF = "C:/Rtools/mingw_$(WIN)/bin/")', file = file.path(Sys.getenv("HOME"), ".Rprofile"), sep = "\n", append = TRUE) |
1 2 |
cat("\nCXXFLAGS += -Wno-ignored-attributes -Wno-deprecated-declarations", file = M, sep = "\n", append = TRUE) |
1 2 3 4 |
# 查看配置的信息 cat(readLines(M), sep = "\n") # 或是找到该配置文件的路径,自行打开查看 cat(M) |
4. 安装 RStan
1 2 3 |
# 注意: 如果 https 下载不成功,可改为 http # 确保 dependencies=TRUE ,安装依赖包 install.packages("rstan", repos = "https://cloud.r-project.org/", dependencies=TRUE) |
1 2 3 |
# 注意: 可根据你想使用的内核数来更改数字“4” Sys.setenv(MAKEFLAGS = "-j4") install.packages("rstan", type = "source") |
10
: 1 2 3 4 |
fx <- inline::cxxfunction( signature(x = "integer", y = "numeric" ) , ' return ScalarReal( INTEGER(x)[0] * REAL(y)[0] ) ; ' ) fx( 2L, 5 ) # 应当返回值 10 |
注:以上命令都是在 R 中输入运行的。
在 R 中运行如下代码:
1 2 |
# R install.packages('prophet') |
Python 中的 Prophet 最主要的依赖库是 pystan
。不管什么系统,都需按照 安装教程 先安装pystan
。
1. 安装 Python
推荐使用 Anaconda 。Anaconda 是一个开源的 Python 发行版本,内置conda
来实现pip
库管理的功能。
2. 安装 Pthon 的依赖库
如果你使用的是 Anaconda , numpy 和 cython 库已经内置在其中。但是以防万一,你也可以使用conda
去安装它们:
打开一个命令行程序
使用conda install numpy
命令去安装 numpy ; 使用conda install cython
命令去安装 cython
3. 安装 PyStan 库
Mac/Linux 用户按照下述步骤安装 PyStan 即可。
使用pip install pystan
去安装 PyStan
Windows 用户请按照“Windows 系统安装 PyStan”中的步骤进行安装。
** Windows 系统安装 PyStan
如果是 Windows 系统,在安装 PyStan 前需要按照 安装教程 给 PyStan 安装一个编译器。其中,最为关键的一步就是先安装 C++ 编译器 。
Windows 系统下使用 PyStan 有下列注意事项:
需要使用 Python 3.5 或更高版本
抽取样本时,必须使用n_jobs=1
(Windows 系统下的 PyStan 不能使用并行多线程运算)
安装 C++ 编译器
进入 Visual C++ Build Tools 网页,点击“Download Visual C++ Build Tools 2015”。
如果你遇到了安装的问题,可以去 Python维基下的 Windows Compilers 寻求解决办法。
如果你使用的 Windows 7 系统,可能需要在安装 Visual C++ Build Tools 下先更新 Microsoft .NET Framework 。
安装 PyStan
打开命令行程序,输入下列命令:
1 |
pip install pystan |
可通过在 python 中输入下列抽样的代码,验证安装成功:
1 2 3 4 5 |
>>> import pystan >>> model_code = 'parameters {real y;} model {y ~ normal(0,1);}' >>> model = pystan.StanModel(model_code=model_code) >>> y = model.sampling(n_jobs=1).extract()['y'] >>> y.mean() # 结果应当在 0 附近 |
使用命令行程序运行下列pip
命令安装即可:
1 2 |
# bash $ pip install fbprophet |
Ubuntu 系统安装注意事项
在 Ubuntu 16.04 系统下,使用系统内置的 python 2.7 安装上 fbprophet 后,导入 import fbprophet
时提示需要安装 matplotlib
库和 python-tk
。打开一个终端,输入下列命令即可:
1 2 3 |
~ sudo pip install matplotlib ~ sudo apt-get install tk-dev ~ sudo apt-get install python-tk |
Ubuntu 16.04 系统使用内置的 python 可以成功安装 fbprophet ,但使用 Anaconda 成功安装 PyStan 库后,检验代码无法成功运行, Prophet 库也无法正确安装:
运行检验代码后的错误信息:
1 2 3 4 5 6 7 8 9 10 11 12 |
Traceback (most recent call last): File " model = pystan.StanModel(model_code=model_code) File "/home/username/anaconda2/lib/python2.7/site-packages/pystan/model.py", line 315, in __init__ self.module = load_module(self.module_name, lib_dir) File "/home/username/anaconda2/lib/python2.7/site-packages/pystan/model.py", line 54, in load_module return imp.load_module(module_name, *module_info) ImportError: /tmp/tmpgc2vTO/stanfit4anon_model_5944bb5b3a93728ca2bf_765485408593311.so: undefined symbol: _ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE |
后尝试在 Anaconda 的 Spyder 中将 console 的 python 路径更改为 /usr/bin/python
,运行检验代码仍然报错:
1 2 3 4 5 6 7 8 9 10 11 |
Traceback (most recent call last): File " File "/usr/local/lib/python2.7/dist-packages/pystan/model.py", line 315, in __init__ self.module = load_module(self.module_name, lib_dir) File "/usr/local/lib/python2.7/dist-packages/pystan/model.py", line 54, in load_module return imp.load_module(module_name, *module_info) ImportError: /home/username/anaconda2/lib/python2.7/site-packages/numexpr/../../../libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /tmp/tmptEazgR/stanfit4anon_model_5944b02c79788fa8ca2bf_7654287730157512986.so) |
在网上查询后,发现是由于 Anaconda 中未安装 libgcc
库。打开一个命令行,运行下列代码安装即可:
1 |
conda install libgcc |
安装 libgcc
库后,就可以成功运行检验代码了。
机缘巧合下,发现安装 libgcc
库后,使用Anaconda 自带的 python ,也可以成功安装 PyStan
和 fbprophet
了。遂将 Spyder 中 console 的 python 路径更改为原来默认的。
Windows 10 系统已安装上 C++ 编译器和 PyStan 库且检验代码成功运行后,无法安装 Prophet 库:
错误信息:
1 |
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2 |