社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 是数据科学基石的原因

Python程序员 • 8 年前 • 600 次点击  
由来

几周前我们在 AdTriba 开发了一个仿真工具。其中需要解决一些关于凸优化的问题,我们不想自己动手去写一些程序,所以需要借助第三方软件包。对于任何统计分析问题,我们首先想到的就是 R 语言。 R 语言中有各种各样的软件包。但是我们并没有去 CRAN 中查看,反而直接去 PyPI 查找。


为什么呢?因为我们的开发工具需要在多个计算机上运行。我们需要为用户提供服务并需要一个数据产品。 对于像我们这样的小团队来说,快速更新和减小开支是很重要的。多亏了这种简洁的方法,我们从第一行代码到完整的产品只花了三天时间,我们的用户可以用它来优化他们的营销预算。


1Python应用于数据产品


使用 Pyhton 的决定可能并不明智,所以让我来解释一下我们的原因。 Python 擅长两个领域:机器学习和 web 开发。咋一看,它们两个好像并不相关,但是仔细查看可以发现两者互为补充。你可以使用你喜欢的工具,例如 IPython 和 pandas 去清理你的数据并对其建立机器学习模型。然后你可以从丰富的 Python web 框架中从选取一个来把你的模型转化为一个真正的产品。没必要纠结使用什么语言,也不用重复编写代码[1]


作为数据产品的基础,使用 Python 是很简单的。唯一的要求就是你需要有点编程技巧。作为一名数据科学家,你应该有能力去编写高质量的代码,其可以在版本控制中进行检测,并至少有一些结构,例如分离函数和定义良好的输入、输出。如果你的机器学习代码满足了这些要求,那么你的模型就完成了一半。


2将你的程序脚本转化为产品


为了说明建立数据产品的基本过程,我为你展示一下我们开发仿真工具的步骤:


1. 使用 IPytho 交互式环境,使用全局变量来实现程序脚本从而验证自己的想法。


2. 将 IPython 中的代码写入正常的 *.py 文件,并且为之建立结构。重构一个名为 simulate() 函数,可以在输入数据和返回结构化数据的时候方便调用。


3. 然后基于 simulate() 建立一个 RESTful 应用程序接口(API),这个接口接受 JSON 数据输入,返回 JSON 数据输出。


4. 在 AdTrida 页面建立前端应用,推广 RESTful 应用程序接口。


5. 任务完成!


另外,在第三步中,你使得 simulate() 方法返回虚设数据。使用这种办法的话,你可以从两方面跟踪问题: 一方面是机器学代码,另一方面是 web 框架的整合。因为你约定了交互的方式: simulate()接受特定格式的数据并返回特定格式的数据,这两个方面工作的完全独立,互不依靠,这可以为你带来很大的好处。在机器学习端你可以随时应用你的模型,并设定 simulate() 接受虚设的数据并输出真实的数据。在 web 开发端,你不需要改变任何东西,因为约定的数据格式已然有效,只是在 HTTP 终端会根据输入数据产生正确的输出。


我们已经在 AdTriba 多次应用这一流程。 它使得我们能够不断的快速更新服务。web 端的开发人员无需等待数据科学家完成机器学习的代码后再开展工作。你将不会因此时间浪费,因为没人会妨碍你的工作。


如何你是独自一人,从机器学习端开始并继续会更有意义。这种方法的优点就是你无需纠结于确定的数据格式,只要你准备好了,你只需要关注于你的模型并定义数据结构。当然,在解决一个问题时应尽量不要更换工作内容。


3了解你的网络工具


假设你已经了解了如何去构建机器学习模型的一些知识,你可能就得开始 web 开发部分了。


你遇到的第一个问题就是:我们应该用哪个 web 框架?当然这取决你你自己。有两个比较流行的 Python web 框架,分别是 Djando 和 Flask。两者都很强大但原理不同。


  • Flask 是一个微型框架。仅仅包含一些必要的东西,如果你需要别的东西,你需要通过插件库来添加或者你自己编写程序。

  • Django 则森罗万象。你不必考虑用户管理,数据库交互等问题。 Django 帮你解决。



这两个框架我都用过,它们都很棒。 如果你想深入其中的任何一个,我强烈推荐下面的几本书:


  • Django: Two Scoops of Django 1.11  Daniel 和 Audrey Roy Greenfeld 编著

  • Flask: Flask Web Development  Miguel Grinberg 编著


因为我们的仿真工具不需要任何的维护和用户管理,所以我决定使用 Flask 框架。这个决定可以让我们在不借助任何模板程序的前提下写出轻量级的服务程序。这只是我们仿真逻辑中的一小部分而已。


当我开始在 BBY.io 工作的时候,我毫不犹豫的选择了 Django。 为什么呢? 因为其中涉及到数据库,用户管理,并需要创建,修改,删除 A/B 测试等功能。(在 web 开发中称为 CRUD: 创建(CREATE),读取(read),更新(update),删除(delete))。


如果你不知道该用哪个框架,我有一个很简单的经验:对于那些没有太多逻辑性的内部工具的开发使用 Flask,其他的就使用 Django。 每个项目都会成长,其需求也会改变。当那一刻到来时, 为 Flask 添加功能的开销将会大于一开始就使用 Django 的开销。


后记


我知道你不可能使用 Python 来开发所有的数据产品。在大公司中,对于面向用户的服务,可能需要其他的语言,例如 Java。或者有些数据科学家对 Python 不太熟练。但是如果你需要完成端对端的开发过程(或者你正在做某一部分的项目)Python 应该是你的不二之选。


英文原文:http://blog.datalifebalance.com/python-rocks-data-products/
译者:无 



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/oYPxRgdIlj
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3334