0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享自己用于搞定数据处理和机器学习的开发环境

Tensorflowers 来源:未知 作者:李倩 2018-06-15 09:53 次阅读

当我们不再重复“造轮子”时,会使用大量前人打造的工具,为了管理好这些工具的引用和依赖关系,我们必须有良好的意识和趁手的工具。今天这一讲,就是在一切变得复杂之前,让你找到新的方法来节省时间和精力。

开发者们对自己的开发环境总是有着各种各样的偏好。Vim 还是 Emacs?使用 tab 还是空格缩进?Virtualenv 和 Anaconda 哪个更好?纷争不断,争论不休。今天我们会与大家分享自己用于搞定数据处理和机器学习的开发环境。

你不必照着我的配置来弄,但也许其中的一些可以启发你搞定专属的开发环境。

Pip

首先要讲讲 Pip。Pip 是 Python 的包管理工具。Python 内置 pip 已经有一些日子了,所以如果你装了 Python,通常都会自带 pip。

Pip 被用来安装各种包,比如 tensorflow、numpy、pandas 和 jupyter,同时还会将它们的依赖一同安装好。

pipinstall

许许多多的 Python 资源都通过 pip 包的形式来传输。有时你会在某个包含 Python 脚本的目录下看到一个 requirement.txt 文件。通常,那个文件描述了当前项目所需的所有 pip 包,通过下面的命令即可将它们都安装到当前目录。

pipinstall-rrequirements.txt.

作为整个 pip 包生态的一份子,各种各样的版本号、依赖信息充斥其中。有时我会针对不同项目使用不同版本的库(pip 包),所以我需要有一种能够针对独立环境配置一组包依赖关系的方式。

同时在一台机器上搞 Web 开发和数据科学相关研究会让你电脑上的 Python 包版本系统混乱不堪

目前有两种非常受欢迎的方式用于管理不同的 pip 包:virtualenv 和 anaconda。

Virtualenv

Virtualenv 支持你创建可命名的“虚拟开发环境”,在其中你就能按照单独的习惯安装 pip 包了。

如果你想要针对每个环境独立控制对各类 pip 包的管理,那么这就是一款绝佳的工具比如,你可以为 Web 开发创建独立的环境,定义所需的依赖库,然后为数据相关的开发研究建立截然不同的环境。

这样一来,你再也不用顾虑各种毫无关系的依赖包在开发环境中存在,也可以创建具有专门用途的开发环境。

Anaconda

如今,如果你主要从事数据相关的工作,那么 Anaconda 将会是一个不错的选择。Anaconda 由 Continuum Analytics 打造,并且是一个集成了许许多多数据相关 Python 库的发行版。

Anaconda 的流行应当归功于它只需一次安装就能得到数据科学、机器学习相关的大量工具,所以它胜在快速和简单的安装配置过程上。

与 Virtualenv 一样,Anaconda 也引入了创建专属环境的概念,也提供了每个环境下独立的依赖库版本支持。Anaconda 还有自己的包管理器:conda,你可以用它来安装依赖库。

另外,Anaconda 还允许你通过 pip 安装一些在 Anaconda 包管理器中找不到的 Python 包。

怎么选择呢?

那么究竟该怎么选择呢?是 Virtualenv 还是 Anaconda?比如我时常会跨越 Python 2 和 Python 3 测试新的 TensorFlow 版本和一些其他的库。

理想情况下,我能在这两者上使用那些新的库,但是某些情况下,两者都不能够满足需求。

再认识认识 pyenv

所以最终我选择两者都用,然后用 pyenv 这个库来管理所有的东西。从概念上来看,pyenv 处于 Virtualenv 和 Anaconda 的上层,它不仅被用于管理所使用的 Virtualenv 的虚拟环境和 Anaconda 的开发环境,还可以轻松应对 Python 2 和 Python 3 相关的操作。

Pyenv 所有特性中我最钟意的就是它为给定目录创建默认开发环境这一点。这就使得创建新目录时所需的开发环境实现自动配置。特别是当我每次要创建新项目的时候,这比起以往要记住如何创建复杂环境来说简单多了。

所以到底应该用哪一款 Python 包管理工具?这确实由你的日常工作流和喜好来决定。

如果你一般就是用一些核心的数据研究工具,并且不在意有一些额外多余的库安装到本地,Anaconda 是个不错的选择。选择 Anaconda 能够给你满足所有需求偏好的更简单的工作流。

但是,如果你是一个喜欢定制自己的虚拟工作环境并且对其中的依赖项有极强控制欲的人,那么诸如 Virtualenv 和 pyenv 的工具就非常适合你。

小结一下

管理 Python 依赖库,绝对没有唯一最佳,除了我列举出来的之外还有许许多多非常不错的。

各种各样的工具此起彼伏,记住最重要的就是每个人都有不同的需求、偏好、用法,所以要根据自身的需求来觉得最适合你的工具是什么。

你的 Python 环境是什么样的?你是如何牢牢掌控一切的?在评论中分享你的配置吧!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据处理
    +关注

    关注

    0

    文章

    598

    浏览量

    28563
  • 机器学习
    +关注

    关注

    66

    文章

    8416

    浏览量

    132616
  • python
    +关注

    关注

    56

    文章

    4796

    浏览量

    84664

原文标题:AIA 系列 | 机器学习工程师们,Python 包管理哪家强?

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器学习为什么需要数据处理

    并以格式化的方式进行存储。为此,我们使用数据处理任务。 为什么我们需要数据处理? 现实世界的数据通常包含噪声、缺失值,并且可能采用无法直
    的头像 发表于 08-24 09:20 1905次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>为什么需要<b class='flag-5'>数据</b>预<b class='flag-5'>处理</b>

    数据处理

    初学者想请教一下大家,采集的噪声信号,想要对采集到的数据累计到一定数量再进行处理,计划每隔0.2秒进行一次数据处理,(得到均方根值等一些特征值)请问大家有什么方法可以实现
    发表于 01-07 10:11

    【MiCOKit申请】智能数据处理装置

    申请理由:对于不同的开发版电路设计不同,实物参考电路设计以方便本人能更好地找到灵感设计电路项目描述:做无线数据处理装置,蓝牙连接电脑声音控制数据处理类似人工智能的范畴
    发表于 08-22 13:55

    STN32开发板应用详解——基于仓储环境监控系统

    、专用设备的智能化管理、机器人及过程控制等领域,完成数据监控、数据处理数据传递等功能。学完本课程,可以掌握STM32开发技术,深入理解嵌入
    发表于 06-13 16:32

    基于仓储环境监控系统——详解stm32开发板应用

    、专用设备的智能化管理、机器人及过程控制等领域,完成数据监控、数据处理数据传递等功能。学完本课程,可以掌握STM32开发技术,深入理解嵌入
    发表于 06-14 15:06

    常用大数据处理技术归类

    ,可以通过类SQL语句快速实现简单的MapReduce统计。像一些data scientist 就可以直接查询,不需要学习其他编程接口。3.PigYahoo开发的,并行地执行数据处理
    发表于 02-28 17:02

    什么是机器学习? 机器学习基础入门

    中,我将概述机器学习,它是如何工作的,以及为什么它对嵌入式工程师很重要。什么是机器学习机器学习
    发表于 06-21 11:06

    数据处理器:DPU编程入门》+初步熟悉这本书的结构和主要内容

    、 DPU的应用场景与价值? 主要有以下几个方面: 数据中心:DPU可以用于加速大规模数据中心的数据处理任务,例如机器
    发表于 12-08 18:03

    自适应滤波在平台自标定数据处理中的应用

    研究自适应卡尔曼滤波技术在平台自标定数据处理中的应用. 方法 对平台标定中数据处理的一种方法是对角度传感器输出分析, 解算出漂移角速率, 并在此基础上辨识出漂移参数.
    发表于 07-09 14:12 12次下载

    游客游迹RFID数据处理与清洗方法研究与实现

    针对游客游迹跟踪与追溯系统,本文深入分析了游客游迹不确定数据产生的原因,根据景区应用特点,提出了一种游客游迹RFID数据处理与清洗方法。在数据处理时,引入事件概念,设计
    发表于 07-25 17:52 24次下载
    游客游迹RFID<b class='flag-5'>数据处理</b>与清洗方法研究与实现

    基于iOS环境下的实验数据处理系统的设计与实现

    基于以智能手机为载体的移动互联网迅速发展的现状与物理实验数据处理对复杂性与时效性的要求,采用iOS系统专用编程工具Xcode所提供的Ohjective-C编程环境开发了一套实验数据
    发表于 11-14 15:10 20次下载

    机器学习数据处理的常见算法的简单介绍及优缺点分析

    在我们日常生活中所用到的推荐系统、智能图片美化应用和聊天机器人等应用中,各种各样的机器学习数据处理算法正尽职尽责地发挥着自己的功效。本文筛
    的头像 发表于 11-25 11:44 1w次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>和<b class='flag-5'>数据处理</b>的常见算法的简单介绍及优缺点分析

    在android开发上运行机器学习算法作为数据处理分析

    电子发烧友网站提供《在android开发上运行机器学习算法作为数据处理分析.zip》资料免费下载
    发表于 10-24 10:10 0次下载
    在android<b class='flag-5'>开发</b>上运行<b class='flag-5'>机器</b><b class='flag-5'>学习</b>算法作为<b class='flag-5'>数据处理</b>分析

    数据处理的基本问题

    计算机是进行数据处理、运算的机器(有点儿像机电系统中的电动机)。当我们回顾数据管理简史并较深入理解计算机原理后会发现,有两个基本问题就包含在其中, 一是处理
    的头像 发表于 02-21 16:12 1055次阅读
    <b class='flag-5'>数据处理</b>的基本问题

    Air780E模组LuatOS开发实战 —— 手把手教你搞定数据打包解包

    本文要说的是低功耗4G模组Air780E的LuatOS开发实战,我将手把手教你搞定数据打包解包。
    的头像 发表于 12-03 11:17 168次阅读
    Air780E模组LuatOS<b class='flag-5'>开发</b>实战 —— 手把手教你<b class='flag-5'>搞定数据</b>打包解包