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和Javascript之间共享常量   c#无法使用Gson反序列化字节[]   如果字符串是实十进制数字,则在Java中仅显示十进制数字   与Android Studio的java FireBase同步失败   web应用程序的Java Oracle数据库更改通知问题   数组中缺少整数的java嵌套循环   zos在z/os上以TOD格式(一天中的时间)转换Java时间戳   java JAXB未根据注释生成XML(JDK 1.7)   java使用Twitter4j和Geolocation查找在该地区发布推文的用户,但如何获取用户ID?   在Libgdx中实现简单运动模糊的java意外结果   java在Android数据库中插入另一个EditText值?   java标准偏差数组(我的算法错误)   java如何修复M1 Mac的Ant javascript标记?   java遍历树标记值的长度   java理解Springboot中的Cron,自动发送电子邮件   java如何将“Data.Json”文件从资产保存到内部存储器,然后将其用于读/写   java代码在编写FirstDuplicate方法时会遇到时间限制问题   java将HTML转换为PDF并将其添加到段落中   javascript css()未设置正文标记的背景属性