和那些資料科學比賽不同,在真實的資料科學中,我們可能更多的時間不是在做演算法的開發,而是對需求的定義和資料的治理。所以,如何更好的結合現實業務,讓資料真正產生價值成了乙個更有意義的話題。
資料科學專案的完整流程通常是這樣的五步驟:
需求定義=》資料獲取=》資料治理=》資料分析=》資料視覺化
需求定義是資料科學專案和資料科學比賽的最大不同之處,在真實情景下,我們往往對目標函式、自變數、約束條件都並不清晰。需要通過訪談、**、文件等等形式對問題進行系統地分析,將實際問題量化為可以解決的抽象問題,確定自變數、約束條件以及目標函式。在真實情景下,需求往往是多變化的,臨時的,如何把握好需求成為了整個專案後續推進的關鍵要素。
資料獲取的形式主要包括:
現有資料庫的呼叫
現有api的呼叫
自行設計的爬蟲
在資料獲取中,比較重頭的一項就是爬蟲的開發,這裡 r 雖然開發了 rvest 包, 不過比起 django-scrapy 這樣完整的爬蟲排程系統不禁黯然失色,所以在第一步,我建議使用python做爬蟲的開發。
資料治理第一步就是資料的定義,而資料的定義通過 python的各種orm框架和admin系統,可以非常出色地完成資料倉儲的定義和管理。通過 airflow 我們又可以很好的對etl過程做全流程的監控。
所以,在第二步,我依然建議使用python作為資料治理的工具。
資料視覺化本來是js的天下,但是感謝 r語言生態中熱衷於給js做封裝的開發者們,現在市面上絕大部分在bi領域會涉及到的js庫都已經被 r 語言封裝好了,比如 echarts、highcharts、rcharts、d3等等。另一方面,通過 shiny, 我們快速極大地簡化了bi構建的流程,跳過底層jquery、boostrap、websocket等等細節,直接針對業務場景構建bi系統,幫助我們在快速構建bi原型上掃清障礙,而不是在tornado裡面辛苦地改template。顯然,使用 r 做資料視覺化可以大大減少我們的開發時間。所以,第四部,我也建議使用 r 完成資料視覺化的工作。
這樣正常資料科學專案做下來,我們需要交付乙個爬蟲管理系統(django-scrapy)、乙個資料倉儲管理系統(django)、乙個流程監控系統(airflow)、乙個bi分析系統(shiny),真正完成對整個資料科學專案的可監控、可維護,然後在這個過程中我們不斷去迭代我們的資料產品,優化流程,完善模型,最終實現反哺業務。
總結起來,將python作為資料科學的基礎,而r作為上層建築是乙個不錯的解決方案,當然這一切都建立在資料開發人員具有過硬的開發技能,否則python和r的隨意性會釀成巨大的**。
如何科學使用Stack Overflow
作為一名程式設計師,如果沒有聽過 stackoverflow,那麼你最好去面壁思過一下。程式設計師最需要閱讀的一本程式設計書籍 其實程式設計書留下這本就夠了!那些還沒有讀過這本書的程式設計師,是時候買一本了。如果還在猶豫,那麼先看下這篇文章,看看為什麼離不開 stackoverflow。當你丟擲乙個...
如何科學使用Stack Overflow
作為一名程式設計師,如果沒有聽過 stackoverflow,那麼你最好去面壁思過一下。程式設計師最需要閱讀的一本程式設計書籍 其實程式設計書留下這本就夠了!那些還沒有讀過這本書的程式設計師,是時候買一本了。如果還在猶豫,那麼先看下這篇文章,看看為什麼離不開 stackoverflow。當你丟擲乙個...
資料科學 如何使用CuPy使Numpy更快
numpy一直是python社群的禮物。它允許資料科學家,機器學習從業者和統計學家以簡單有效的方式處理矩陣格式的大量資料。就速度而言,numpy本身就是python的重要一步。每當你發現你的python 執行緩慢時,特別是如果你看到很多for迴圈,那麼將資料處理轉移到numpy並讓它的向量化以最快的...