韩国快乐8开奖结果查询 > 億信 > 行業資訊 > 數據可視化

加拿大快乐8开奖同步:讓數據可視化“更上一層樓”的修煉寶典

時間:2019-05-24  來源:讀芯術  瀏覽數:13

韩国快乐8开奖结果查询 www.ctfwdx.com.cn 在ggplot2、seaborn、shiny、Dash、R或python之上,還有哪些更高級的程序語言?有關數據可視化“更上一層樓”的秘訣,本文將一一道來。

眾所周知,對許多企業來說,數據即商機。因為數據能為企業提供更優質的決策和預測??厥諧?、模型診斷及生產制造,各個階段都需要研究數據。而其中涉及的工具更是五花八門,從Excel到通過python matplotlib進行的Tableau。不同的要求會給數據研究的自動化帶來不同程度的難處。


顯而易見,在對股東或其他觀眾做匯報時,人人都想用美觀炫酷、交互性強的商業儀表板來匯報業績,溝通工作。其標準流程是將解決方案打包成網絡應用程序(讓其在客戶端與服務器中共同運行)。


用數據科學領域的經典工具包創建網絡應用,總會出現很多讓人沮喪抓狂的問題。不過,有一個極好的解決方案可以提供給你——該方案涉及Lisp算法(該算法的一種特定語言),人工智能淵源最久的計算機語言之一。


本文適用于任何需要在工作中進行數據可視化的人,尤其是那些需要在網絡應用里實現其高度個性化與靈活化的業界人士?;八淙绱?,任何致力于打造個性化用戶界面的數據科學家也能從本文獲益。在閱讀全文前,如果你從未接觸過ggplot2和plotly,建議你先惡補相關知識,因為它們涉及數據可視化的一些標準邏輯,能提供一個基準來對二維線畫圖函數作出預測。


問題


在數據科學家們看來,R或python是最杰出的計算機語言,兩者都有一個用來制作互聯網應用的標準數據庫——Shiny庫與Dash庫。這兩個數據庫都可用來制作網絡應用,搭建起溝通主語言與javascript——同時也相當于js——的橋梁。它們還可用于瀏覽器(前端)與服務器(后端)之間的信息交流(如數據傳輸與用戶交互),在該過程中,應用以主語言運行,直到程序終止為止。


此外,它們還處理js的異步數據交互,為緩解應用部署壓力起到積極作用。說句公道話,在上述方面,這兩種語言的作用舉足輕重。但是,前端與后端的歸并也會帶來很多不便,大幅降低這些應用框架的使用價值。


1. 用戶如今已習慣了這樣一個流暢迅捷、功能多樣的動態行為界面,即使是錯誤信息也會以動態UI的形式得到呈現。出于對js的規避,shiny與dash的用戶往往在按照要求實現HTML的個性化輸出上力不從心。例如,根據瀏覽器的寬度尺寸來創建一個帶色按鈕,如果不用js,操作起來會很困難。就算真有這樣的方法存在,它也需要一個聯通前端與后端的通信循環,而這瑕疵頗多,并不理想。


2. 用shiny與dash這兩種框架很難編寫出真正意義上的??樵?。這里的關鍵原因在于HTML節點所進行的用戶事件會觸發HTML節點標識符與后端效應的強耦合。此外,就shiny而言,因為環境,命名空間與??樵赗里并不常見,所以用其制作一個??樵苣?。


3. 最后,即最重要的一點,這兩個框架的發展進程令人懊喪。以這些程序包為基礎的反饋周期漫長得令人發指:生產環境中會生成新的特征、成分、視圖與標簽,每當源代碼出現一處變動,后端就會重啟,互聯網瀏覽器就要刷新,研發者就要保存當前特定狀態,以確認這次調整是否達到預期效果。在一定規模的項目中,數據和程序包在一開始便被上傳,每一次迭代發生變化時,研發者就要費工夫進行初始化。最糟的是,區區一個句法錯誤,就會讓整個應用在重載中崩潰(注意,模擬兩種系統的熱重載會有被黑的風險。后端在處理文本區域時還會根據eval command評估文本中的代碼內容?;謊災?,這會帶來信息安全問題)。

解決方案


前后端的再分離,輔之以前端控制,便能解決上述所有問題。


1. 方案會讓你獲得全部收益,并以此控制前端,鑒于所有的計算結果都呈現在瀏覽器上,所有用戶界面操作都不再需要與后端進行信息交流。


2. 大多數的前端技術都能夠處理??橛朊占?,因此你可以同時處理如種類、日期等多個變量(只要這些變量處于不同的命名空間),一切有條不紊。此外,由于該程序不需要與客戶端進行數據通信,程序代碼變得更加??榛?,也因此更加耐用。


3. ??槿忍婊唬慈戎卦兀┰諂淥蚣苤幸材芄皇迪?。正是這一特征讓人們對采用這一解決方案躍躍欲試。最后一點是最好的單一功能,這個功能的優越性打動了你,你將無法回到沒有該功能的生活。


簡單粗暴的方法


學習js與ReactJS(與dash聯系緊密),可不是樁易事,因為如上文所述,Js古怪頗多,很是難學。

“寄生語言”(ParasiteLanguages)


“寄生語言”是一種編程語言,它利用現有的語言及工具,將句法根據特定的基本技術進行轉化。例如,Scala是Java的寄生語言,TypeScript是js的寄生語言。寄生語言的優勢在于它可添加某種范式并規避目標語言的一些弱點。例如,TypeScript在js基礎上添加了類型屬性。我認為,Clojurescript(cljs),即Clojure的一個以js為原型的版本,是所有數據科學家最得力的輔助工具。因為cljs代碼實質上就是js代碼,所以你能享受到和js一樣的由高速帶來的恩惠。命名空間是cljs的標配,而且要比Javascript簡單得多。多虧了figwheel及shadow-cljs,熱重載也是行之有效。


但是,如果js也能達到上述效果,為何我會偏愛cljs呢?這是因為這款計算機語言極其簡單,且格外穩定,可用于制造出精致且簡明的代碼。它消除了許多js語言的代碼陷阱,并搭建起一個置數據于代碼中心而非容器的模型(從此不再有包含1500個類的項目)。此外,cljs還有一個身經百戰的標準數據庫,可用來處理數據。


后端


就后端而言,雖然運算部分與執行業務邏輯的代碼保持原樣,但為了響應前端發出的HTTP(S)需求,代碼上需要增添一個包裝器。用R語言的plumbr包或python的flask應用框架便可輕松搞定。一些可由客戶執行的簡單操作(如按照組別對表格進行篩選與分組),輸入數據將以csv或json的形式存儲,只需配上一臺HTTO服務器即可(如根目錄里的python3-mhttp. server命令 )。例子詳見個人網頁。


利弊權衡


學習cljs后,用戶對任何新方案都會持懷疑態度。那么,采用cljs又會有哪些不足之處呢?


就特征而言,如今數據科學家需要對客戶和服務器間的通信負責,這意味我們需要學習如何設計一些基礎的應用程序編程接口。但是,這也意味著后端會將用戶通過不同URL請求發出的數據一一遣返。


RStudio和Plotly從部署到生產所提供的解決方案有所不同?;謊災?,盡管網絡應用(前后端分離)結構只有一個標準范式,可供選擇的存儲云供應商與教程卻是不少。


代碼基址如今有兩種程序語言。引進一種新的程序語言與對應的工具總是有風險的。不過,我堅信這種方法帶來的益處遠大于其潛在風險。

錦上添花


學習cljs并使用建議的層次結構會給我們帶來許多額外的好處。


· 鑒于cljs屬于Lisp語言,因此它是一個功能性語言。


· 鑒于js以網絡,電腦與移動客戶端為目標,cljs也能達到同樣的效果。


· clojure上手極其簡單,所以很快便能在java虛擬機上編程。


· Google Closure上如代碼拆分與無用代碼刪除等工具都適用于cljs,這能優化應用代碼尺寸,利于用戶體驗的流暢性。


· 盡管plotly是一個很好的默認選項,你還是可以使用任何js可視化框架。有聽說過Vega嗎?有了它,編寫R或python便不再需要包裝器。


· 多虧了cljs與js的互操作性,你可以充分利用任何在包裝器上以js語言寫成的ReactJS組件,來完善自己的程序語言。你甚至可以重新使用dash-html組件。


· 在某種情況下,你會學習emacs,這是目前效率最高的工具。將其與Lisp相結合,配置程序將變得信手拈來,游刃有余。(但切勿同時學習emacs和cljs這兩種語言)


結論


本文中,筆者建議數據科學家學習網絡發展中的關鍵技術(cljs),以此豐富制作應用的發展經驗。雖然R Shiny與python Dash也能奏效,但他們的前端技術缺乏關鍵特征,如??槿忍婊唬ㄤ榔韉奈匏⑿賂攏?,這會導致發展經驗的次優化。


本文還對cljs優于js這一觀點做出論證。但筆者想提出另一個觀點,讓任何人最終都愿意體驗一把cljs:用cljs創建數據可視化與網絡應用實在是其樂無窮。cljs處理問題迅捷,專注與靈感常伴人左右,只須靈光一閃,一切難題便迎刃而解。這樣的體驗,值得一試。


聯系
電話

您好,商務咨詢請聯系

咨詢熱線:400-0011-866轉0

手機咨詢:137-0121-6790

韩国快乐8开奖结果查询

您好,技術支持請聯系

QQ:400-0011-866

(工作日9:00-18:00)