最近在研究nupic的htm算法,现在说下安装的问题,给需要的人,避免采坑
首先在github上有这个算法的整个框架和实现,具体的网址可以参考https://github.com/numenta/nupic
上面有具体的安装说明,但是有以下几点需要注意:
(1)python版本必须是2,HTM算法不支持python3。推荐python2.7.15(比较稳定的版本),下载的时候注意匹配自己的操作系统(windows,linux,macOS)和自己的操作系统位数(32位还是64位)
我自己的系统是64位,但是安装的时候装了32位,结果一直装不了nupic,报错如下:
32位的最多只支持nupic.bindings==1.0.3版本,但安装不了nupic
(2)确保你有管理员权限或者是python的安装用户,否则在安装的时候会遇到permission的问题,这时候可以在命令后面加上--user
(3)安装依赖,htm底层是C++实现的:
以windows为例:
C:\Python27>python.exe -m pip install setuptools
C:\Python27>python.exe -m pip install wheel
C:\Python27>python.exe -m pip install numpy
下载c++编译器(linux下gcc,windows下用VCForPython27),链接:
https://www.microsoft.com/EN-US/DOWNLOAD/DETAILS.ASPX?ID=44266
(4)安装nupic
python.exe -m pip install nupic #直接安装
python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple nupic #如果网络问题直接安装不成功,国内可选镜像
(5)配置环境变量
在使用nupic框架的时候,会用到USER这个变量,linux下可以直接设置,windows下可以右键“计算机”->“高级系统设置”->“环境变量”->“用户的变量”,增加USER,值为自己的用户名
(6)修改编码方式
安装成功后,直接运行会报下面的错,这个是因为python2对matplotlib的支持有问题,需要做修改打开文件的路径
if not line.startswith(' File "<frozen importlib._bootstrap'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd2 in position 20: ordinal not in range(128)
修改如下:
from __future__ import (absolute_import, division, print_function)#,
#unicode_literals)
backend = matplotlib.get_backend()
_backend_loading_tb = b"".join(
line for line in traceback.format_stack()
# Filter out line noise from importlib line.
if not line.startswith(b' File "<frozen importlib._bootstrap'))