全文共1486字,預計學習時長5分鐘
圖源:unsplash
我們不得不承認,Jupyternotebook確實是一款非常棒的工具,它不僅加入了探索性數據分析功能,也開闢了整個軟件工藝界的典範。
現代軟件行業非常瞭解如何保持代碼基礎整潔。為了進行結構化,代碼基礎將首先被分為多個域,然後是服務或庫,接着它們被分為不同的程序包,最後被分成類或函數。
每一個過程中都會有用於拆分、設計應用程序接口(API)和通信的多種模式,有集成新代碼的進程和支持該進程的工具,有多種測試方法(和工具),還有用於發現不良設計的代碼審查實踐和工具。
在代碼投入生產之前,經驗豐富的軟件工程師會應用以上全部最佳實踐,因為忽視不良設計的風險確實存在——你可能會為了在系統中添加一些小功能而花費數週時間,而且修復bug的過程也會是一場噩夢。
問題是,不是所有的代碼都值得投入生產。對企業來説,沒有直接或間接附加價值的代碼最好不要生產。在生產過程中,無用的功能會產生兩個不好的影響:
· 為了遵循上述所有的最佳實踐,生產過程會非常昂貴,所以你就不能再實現其他功能了。
· 它增加了系統的複雜性,相當於增加了用於系統維護的運營成本,也使得進一步的改變難以實施。
有時候,檢驗創意是否符合客户需求的唯一方法就是實施幾個計算機程序設計(MVP)。但更加簡單的辦法是通過研究進行假設,這也是Jupyter notebooks發揮作用的地方。
數據科學家的首要目標若是改進某一特定產品,那麼假設將成為其工作的主要內容。這是滿足特定需求(通常是客户需求)的一種可行的方法。
假設可以分成更小的部分,比如研究、數據傳遞、分析和模型構建。最重要的一點是,假設有可能成功,也有可能失敗。失敗的原因可能是該假設完全沒有需求,或者它並沒有真正覆蓋需求,也可能是沒有足夠的數據來構建模型,或者客户不願支付所需的價格,又或者因為其他的一些原因。
因此,你需要一種方法,既能讓你以低廉的價格去測試假設並很快得到反饋,又能迭代多個假設,直到你找到一個可行的解決方案,或宣佈該問題無法解決。
圖源:unsplash
假設你是一名保險推銷員,想向客户推銷更多的旅遊保險,你會如何尋找合適的羣體呢?是依據人口統計學資料(年齡/性別/家庭狀況/就業狀況)還是他們擁有的其他產品?還是基於他們的財務交易?或是基於他們的GPS數據(假設客户擁有你的應用並共享該數據)?你會提出一定的折扣還是按正常價格出售?這些都是有待檢驗。
使用Jupyternotebook,可以對每個假設執行如下操作:
· 對客户的數據進行探索性分析
· 隨機導出部分受眾,以便將其傳遞給市場部進行活動
· 在該活動開始運行後,追蹤活動的數據並撰寫報告
· 建立一個基於規則或使用機器學習的簡單模型,以此將客户基礎限制為你的目標受眾
不要圍繞模型構建服務,不要將其集成到CI/CD管道中,不要在客户關係管理(CRM)中實施新的流程,也不要在此時向移動應用程序添加旅行保險小部件!
圖源:datacamp
實現單一假設所做的所有工作都應限制在1周左右,而且反饋週期也不應太長。你也要做好接收到差評的心理準備。將這些反饋記錄下來,然後進入下一個假設——畢竟扔掉一個筆記本比扔掉一個完全構建和集成的解決方案要容易得多。
如果你找到了能真正為產品增加價值的假設,就可以打開IDE程序,開始編寫可用於生產的代碼,我個人喜歡用PyCharm。
講真的,將時間投資在追趕業界最佳實踐上,十分值當。