VowPal Wabbit Python包

vowpalwabbit的Python项目详细描述


PyPI PackageBuild StatusWindows Build StatusCoverage

wabbit是一个用于在线学习的快速机器学习库,这是项目的python包装器。

安装这个包将在本地构建vowpal wabbit,以便在python中显式使用,它不会创建命令行版本 该工具(或影响任何先前存在的命令行安装)。 要安装命令行版本,请参见项目主页:https://github.com/VowpalWabbit/vowpal_wabbit

pypi vowpalwabbit包的版本对应于将要使用的github repo中代码的标记版本 在建造和安装期间。 如果需要对代码进行本地更改并重新生成python绑定,请确保pip uninstall vowpalwabbit,然后重新生成 使用下面的本地repo安装说明。

安装

来自PYPI:

Linux/Mac操作系统:

$ pip install vowpalwabbit

窗口:

> pip install --global-option="--vcpkg-root=path\to\vcpkg" vowpalwabbit

来自本地回购(进行修改时有用):

# Dependencies
$ sudo apt install libboost-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev libboost-math-dev libboost-test-dev libboost-python-dev zlib1g-dev cmake

# Build and install package
$ python setup.py install

用法

您可以直接这样使用python包装器:

>>>fromvowpalwabbitimportpyvw>>>vw=pyvw.vw(quiet=True)>>>ex=vw.example('1 | a b c')>>>vw.learn(ex)>>>vw.predict(ex)

或者您可以使用附带的scikit学习界面,如下所示:

>>>importnumpyasnp>>>fromsklearnimportdatasets>>>fromsklearn.model_selectionimporttrain_test_split>>>fromvowpalwabbit.sklearn_vwimportVWClassifier>>>>>># generate some data>>>X,y=datasets.make_hastie_10_2(n_samples=10000,random_state=1)>>>X=X.astype(np.float32)>>>>>># split train and test set>>>X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=256)>>>>>># build model>>>model=VWClassifier()>>>model.fit(X_train,y_train)>>>>>># predict model>>>y_pred=model.predict(X_test)>>>>>># evaluate model>>>model.score(X_train,y_train)>>>model.score(X_test,y_test)

故障排除

安装失败的一些常见原因是由于在构建vowpal wabbit时缺少或不匹配的依赖项。 确保您的系统上安装了boost和boost python。

对于ubuntu/debian/mint

$ apt install libboost-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev libboost-math-dev libboost-test-dev libboost-python-dev zlib1g-dev cmake

对于Mac OSX

$ brew install cmake
$ brew install boost
#If you want to build with python 2 support
brew install boost-python
#If you want to build with python 3 support
brew install boost-python3

对于Windows

  1. Install vcpkg
  2. Run
> vcpkg --triplet x64-windows install zlib boost-system boost-program-options boost-test boost-align boost-foreach boost-python boost-math boost-thread python3 boost-python

在Anaconda环境下(在OSX或Linux上)安装VowPal Wabbit可以使用以下步骤:

$ git clone https://github.com/VowpalWabbit/vowpal_wabbit.git
# create conda environment if necessary
$ conda create -n vowpalwabbit
$ source activate vowpalwabbit
# install necessary boost dependencies
$ conda install -y -c anaconda boost
$ pip install -e vowpal_wabbit/python

用于ubuntu 16.04 lts上的python3:ubuntu 16.04默认为boost的旧的定制版本。因此,boost_python库名称不遵循office boost发行版为boost_python库采用的标准命名约定。 在这种情况下,您可能需要手动创建相关的符号链接。python 3.5的示例命令如下:

$ cd /usr/lib/x86_64-linux-gnu/
$ sudo ln -s libboost_python-py35.so libboost_python3.so
$ sudo ln -s libboost_python-py35.a libboost_python3.a

开发

欢迎对vowpal wabbit的python包装器进行改进。

  1. 检查打开的issues或创建一个来讨论功能想法或错误。
  2. 分叉github上的repo并对master分支(或master的新分支)进行更改。
  3. 在python/tests文件夹中编写一个测试,显示错误已修复或功能正常(建议使用pytest)。
  4. 确保包在所有支持的环境下安装并测试通过(这将自动调用tox)。
  5. 发送请求。

可以使用setup.py运行测试:

$ python setup.py test

目录结构:

  • python:这就是c++扩展的生命所在
  • python/vowpalwabbit:这是python包装器代码和实用程序的主目录
  • python/示例:示例python代码和jupyter笔记本来演示功能
  • python/tests:包含python代码的所有测试

注意:分布式包中不包括示例和测试目录,它们仅用于开发目的。

Windows的实验构建

主项目experimental Windows CMake build上的扩展。

注意:如果在vcpkg中安装多个python版本时试图在vcpkg中安装boost python,将导致错误。继续之前,请确保环境中只安装了相关的python版本。

Python3

  1. 安装所需的VCPKG
> vcpkg install python3:x64-windows
> vcpkg install boost-python:x64-windows
  1. 运行
> python setup.py --vcpkg-root=path\to\vcpkg install

Python2

由于当前版本boost python的限制,必须对vcpkg工具进行一些手动更改

  1. 编辑[vcpkg root]\ports\boost python
  2. 编辑文件控件
    1. python3的依赖于生成的项更改为python2
  3. 安装所需的VCPKG
> vcpkg install python2:x64-windows
> vcpkg install boost-python:x64-windows
  1. 运行
> python setup.py --vcpkg-root=path\to\vcpkg install

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何加载。java文件到编译器?   java写入文件和I/O   java日历返回错误的当前日期安卓   if语句if变量等于1(java)   java很难让Joda有时间使用我的bukkit插件   json如何创建基于java的应用程序,该应用程序将从网站获取输入   java如何在多页中打印大型JPanel   java my spinner在添加从firebase数据库中选择的多个值时被覆盖   java用Play框架覆盖HTTP方法   试图获取所有用户时,java错误请求400。Dto和表格   java支持bean加载图像后javascript自动调用JS函数   java在MTOM的@StreamingAttachment(Metro)中,Parsely的意思是什么   具有可抢占线程队列的多线程java执行器   Java Opencv connectedComponentsWithStats   java如何向数组中添加2D数组的数目   eclipse为什么我的Java Zork克隆不能正确循环?   java在哪里放置定制的第二个web。xml   java如何更改最近应用列表中显示的快照?   java Browser#getText()返回空字符串