摘要:而大多數數據科學研究的場景下,更快的速度也意味著更早地發現問題和完成檢驗假設的閉環。通常,數據科學被認為研究成果立即應用到生產環境都是比較緩慢的一個過程。
概述
在數據科學研究中,快速驗證想法是非常關鍵的一環,而如何快速開發出數據產品則可以有效推動整個數據科學項目研究成果在生產環境中的應用速度。
而大多數數據科學研究的場景下,更快的速度也意味著更早地發現問題和完成檢驗假設的閉環。
本文將介紹如何通過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
商業使用請聯系作者。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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 通過...
閱讀 1662·2021-09-28 09:35
閱讀 1136·2019-08-30 15:54
閱讀 1661·2019-08-30 15:44
閱讀 3367·2019-08-30 14:09
閱讀 494·2019-08-29 14:05
閱讀 2665·2019-08-28 17:53
閱讀 1986·2019-08-26 13:41
閱讀 1715·2019-08-26 13:26