摘要:而大多数数据科学研究的场景下,更快的速度也意味着更早地发现问题和完成检验假设的闭环。通常,数据科学被认为研究成果立即应用到生产环境都是比较缓慢的一个过程。
概述
在数据科学研究中,快速验证想法是非常关键的一环,而如何快速开发出数据产品则可以有效推动整个数据科学项目研究成果在生产环境中的应用速度。
而大多数数据科学研究的场景下,更快的速度也意味着更早地发现问题和完成检验假设的闭环。
本文将介绍如何通过Docker+Django技术打造数据产品的快速原型,并通过实战案例进行演示。
为什么使用Django最初起源于美国芝加哥Python用户组的Django框架,使得Python的使用者不必写大量的css、js就可以快速数据管理系统的开发,且Django集成了模板系统、ORM、数据迁移版本控制、模糊搜索、过滤器、用户鉴权等特性,同时Django提供了松耦合的设计,并且内置了国际化支持和后台管理界面等实用功能。Django 使得非传统程序员的数据科学家不必依赖于前端、后端工程师就可以自己依照业务完成一些简单的数据管理工作,快速验证想法的可靠性。
给样本打标签是机器学习中非常常见的一项工作,通过Django打造数据产品的快速原型,可以极大方便我们给样本打标签的过程,为机器学习的冷启动争取到更多时间。
为什么使用Docker参考前文 容器定义应用:数据科学的容器革命,随着容器化技术的兴起,数据科学现在最大的一场运动已经不是由一个新的算法或者统计方法发起的了,而是来自Docker的容器化技术。通常,数据科学被认为研究成果立即应用到生产环境都是比较缓慢的一个过程。利用容器技术将加速数据科学在生产环境中的实际应用。
由于Docker的标准交付特性使得 Django 应用在运维、部署、交付时都是标准化的,这就使得研究成果可以快速标准化地分享,通过docker-compose我们还可以很容易地管理单机容器集群的编排。
此外,通常,数据科学团队都是一个5人以内的小团队,从研发序列到生产运维的一条龙输出使得团队成员在技能树异构的情况下必须尽量掌握全栈能力,因为技能树或者专业背景的异构将使得整体分析视野更加开阔,类似于多个弱分类器的模型融合对分类器整体会有提升作用。
数据科学的小团队可以理解为一个小型的分布式系统,由一个 Team Leader 作为 Master,其余成员作为 Worker,为了保证容错性,在Master或者Worker的其中一个节点挂掉时,其他节点必须具备替代其他节点成为Master的能力。
准备根据DockerCon2016的最新消息,我们已经可以在Mac、Windows、Linux同时部署原生的docker容器,而不需要再借助于虚拟机。
所以,本次案例将采用 Mac 作为实验环境,并采用最新的 docker native。
实战 步骤一:安装Docker下载软件
打开安装包后根据提示完成安装即可。
步骤二:部署Django考虑到国内的实际情况,这里采用了时速云提供带有国内apt-get源的Ubuntu镜像作为基础镜像,在此基础上更新pip源后进行后续开发,这样就保证了整个软件更新时的速度不会受到限制。
安装ubuntu OS
docker pull index.tenxcloud.com/tenxcloud/docker-ubuntu
生成容器
docker run -d -p 8000:8000 -v /home:/home --name django index.tenxcloud.com/tenxcloud/docker-ubuntu
进入容器
docker exec -it django bash
安装pip
sudo apt-get install python-pip mkdir ~/.pip echo "[global] timeout = 60 index-url = http://pypi.douban.com/simple " > ~/.pip.conf
安装 django
pip install django步骤三:初始化项目和应用
创建项目工作目录
django-admin startproject FinanceR
初始化应用
django-admin startapp RiskManagement步骤四:初始化数据模型
修改数据模型
vi RiskManagement/models.py
# -*- coding: UTF-8 -*- from django.db import models import uuid SIZES = ( ("0","大盘股" ), ("1","中小盘股" ), ) MARKETS = ( ("0","沪深"), ("1","港股"), ("2","美股"), ("3","其他"), ) LABELS = ( ("0","未知"), ("1","看空"), ("2","看多"), ) STATUS = ( ("0","盈利"), ("1","亏损"), ("2","持平"), ("3","停牌"), ("4","关闭"), ) class portfolio(models.Model): portfolio_id = models.UUIDField(verbose_name="组合ID",primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length = 255,verbose_name="组合名称") introduction = models.CharField(max_length = 255,verbose_name="组合介绍") label = models.IntegerField(blank=False,verbose_name="组合标签",choices=LABELS) status = models.IntegerField(blank=False,verbose_name="组合状态",choices=STATUS) size = models.IntegerField(verbose_name="组合大小盘",choices=SIZES) market = models.IntegerField(verbose_name="组合所在市场",choices=MARKETS) create_time = models.DateTimeField(verbose_name="组合创建时间",auto_now_add= True) portfolio_return = models.DecimalField(verbose_name="组合收益", max_digits=19, decimal_places=10)步骤五:初始化管理模型
接着定义一下后台显示的形式
vi RiskManagement/admin.py
# -*- coding: UTF-8 -*- from django.contrib import admin from .models import portfolio @admin.register(portfolio) class portfolioAdmin(portfolio,admin.ModelAdmin): model = portfolio list_display = ["name","introduction","label","market","size","portfolio_return","create_time"] list_display_links = ["name"] search_fields = ["id","portfolio_id"] list_filter = ["label","size","market"] ordering = ["create_time"] # 全站默认去处 删除选项 admin.site.disable_action("delete_selected") fieldsets = [ ("基础信息",{"fields": ["portfolio_name","introduction",]}), ("其他信息", {"fields": ["market","size","status"], "classes": ["collapse"]}), ]步骤六:初始化数据库
python manage.py makemigrations auth python manage.py migrate auth python manage.py makemigrations RiskManagement python manage.py migrate RiskManagement步骤七:创建系统管理员
python manage.py createsuperuser步骤八:注册应用
vi settings.py
在配置文件中相应的位置注册刚才完成的应用
INSTALLED_APPS = ( "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", "RiskManagement", )步骤九:启动服务器
python manage.py runserver 0.0.0.0:8000
在浏览器中输入 localhost:8000/admin 就可以进入到你想要的数据管理系统啦
参考资料打造数据产品的快速原型:Shiny的Docker之旅
Web Service Efficiency at Instagram with Python
Django Packages
10 Polular Sites Made With Django
Django Packages
django redactor 绝对现代化的编辑器 支持拖拽传图
更优阅读体验可直接访问原文地址:https://segmentfault.com/a/11...
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR专栏:https://segmentfault.com/blog...,如果涉及源代码请注明GitHub地址:https://github.com/harryprince。微信号: harryzhustudio
商业使用请联系作者。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38013.html
摘要:而大多数数据科学研究的场景下,更快的速度也意味着更早地发现问题和完成检验假设的闭环。通常,数据科学被认为研究成果立即应用到生产环境都是比较缓慢的一个过程。 showImg(https://segmentfault.com/img/remote/1460000005771293); 概述 在数据科学研究中,快速验证想法是非常关键的一环,而如何快速开发出数据产品则可以有效推动整个数据科学项...
摘要:使得非传统程序员的使用者不必依赖于前端后端工程师就可以自己依照业务完成一些简单的数据可视化工作,快速验证想法的可靠性。本文以上的的新主机为例。 概述 本文将介绍如何通过Docker+Shiny-Server技术极速打造Web开发,并通过实战案例进行演示。 为什么使用Shiny Shiny是R中的一种Web开发框架,使得R的使用者不必太了解css、js只需要了解一些html的知识就可以快...
摘要:类似包中的功能这很好的解决了的大数据级瓶颈问题。也支持分布式的机器学习算法,比如使用机器学习库。部署本文将通过讲解如何快速部署容器,并通过一些简单的机器学习例子展示如何使用这个航母级别的组合拳。 showImg(https://segmentfault.com/img/remote/1460000004838121); 题图为美国尼米兹核动力航空母舰 介绍 大数据时代,我们常常面对海量...
摘要:对于数据科学的研究可以说已经是本文我将介绍如何以文档定义应用的方式成为数据科学中的标准交付。参考前文解密的数据科学部门如果构建知识仓库,作为一个谢大大的死忠,我很自然选择了作为我文档输出的首选工具。 showImg(https://segmentfault.com/img/remote/1460000006760433?w=423&h=426); 概述 随着近年来,Rstudio 通过...
阅读 1627·2021-09-28 09:35
阅读 1041·2019-08-30 15:54
阅读 1634·2019-08-30 15:44
阅读 3346·2019-08-30 14:09
阅读 467·2019-08-29 14:05
阅读 2642·2019-08-28 17:53
阅读 1962·2019-08-26 13:41
阅读 1675·2019-08-26 13:26