Sunday, April 11, 2021

對於新手入手Python的一些建議

        最近這幾年python彷彿成了一門顯學。數據分析也pyhon,AI也python,大數據也python,爬蟲也python。彷彿python無所不能一樣

        對於一些專業論壇來說,很多高手其實從大學或是高中就開始學程式語言一些專業背景的例如Computer Science或是資訊管理科系,或甚至理工科系的畢業生,大多有些基礎或是已經投入在某些專業領域。因此對於沒程式基礎的小白來說,往往是一開始就讓人放棄的,讓小白想放棄的原因包括

  • 沒全觀視角
  • 人工智慧、大數據、機器學習被濫用
  • debug
        以上說的這些問題,每個都可能讓新同學放棄學習python。因此建議在學習python之前。先仔細思考一下你學習python的目的,以及你在學習中會遇到的困難,還有你能取得到的資源。再決定你的學習路徑(包括一開始就放棄或選擇其他程式語言)。

  • 沒有全觀視角
        對於沒有程式基礎的小白來說,我個人覺得最核心的問題是一開始沒用全觀視角檢視自己該學習python的方向。由於python的應用範圍相當廣泛,從Excel到AI到一個完整的應用,python都能找到解決方案(雖然python可能不是這些需求的最佳解決方案)當你直接從某個應用層面直接入手時,學到後來你可能會因為興趣、沒有基礎知識、產業需求等原因而放棄或多走彎路。因此選定你的切入領域便是最重要的事,接下來才有基礎積累、看懂特定主題的討論等快速成長。

        從這邊舉個財經領域的學生比較熟悉,一般人也能懂的例子。假設你上了投資學裡面的股票技術分析,想找出一個有效的技術分析規則,或許還想嘗試一下程式交易。我們想一下這會遇到哪些流程
  • 一開始肯定是找到數據源,有些數據源可以讓你下載,有些數據源可能需要爬取網頁數據。
  • 接下來是要清洗數據,例如不同的數據要拼接起來、有些數據空值要補0、有些股價要還原股票股利和現金股利、有些數據要直轉橫。
  • 之後要開始計算無數的技術指標,也要做一些符合你需求的圖表幫助你值觀判斷。
  • 接下來終於是這個需求的核心:開發模型找出這些指標的買賣信號。
  • 你或許還想把這些模型應用到實際操盤中,因此你需要將你的模型部屬到機器上進行實時運算,這時候你得考慮到你面對的是每秒都有大量新數據的流式數據,以及你的機器以及代碼是否能撐的住這樣大量模型運算。
  • 接下來這些運算結果是要將消息推送到哪個工具上?還是自動下單交易


        以上介紹的這些流程,每個都是相當廣且深的領域。不管是新同學或是業界從業人員,都很難每個領域都精通,一般只能選擇幾個專領域,其他領域可能得借助團隊中其他領域的專家或是網路上比較通用的現成代碼。之前寫過一篇是否該學爬蟲的文章先認清你產出的價值在哪塊。除非你是專業做這領域的商業應用,否則建議不用學爬蟲了。這樣的結論主要來自兩點:難的你學不會,簡單的有現成的。(注意這句話的重點在"專業錯這領域的商業應用")。
        我遇到的另一個例子是,新同學用python在做數據清洗但一心只想學python,問完inner join問left join,接下來問right join還自認遇到不同的問題。連續幾天遇到的問題其實花30分鐘看一下SQL關於集合的觀念與語法邏輯,觀念性的東西一建立就能舉一反三全弄懂了,但是當新同學的視角只在一個小範圍上時,便會排持別人提供的經驗建議學習的道路上往往會多繞圈子        

  • 人工智慧、大數據、機器學習被濫用
        最近幾年人工智慧、大數據、機器學習這些技術已經被玄學化了。一些新聞報導或是討論群常常會用這些名詞來神化一些技術。這些花俏的名詞對新同學形成很大的隱形障礙,讓新同學無法知道你究竟該學甚麼

        某某報導說某機構利用大數據得出某個結論,阿就技術層面來說這就不是幾個Excel拼湊出來的東西嗎?
        某某銀行說用AI做履歷篩選,是用影像識別技術幫應聘者看人相?還是用OCR技術將pdf/wor不規則的履歷表格式,快速萃取出學歷、工作經歷、技能等欄位的結構式數據?

        這裡暫不討論這些技術的的定義,這邊站在新同學的學習角度,來辨認這些報導或討論哪個才能幫你學習python或其他開發工具。
        例如說到AI,是在說哪個領域圖像?語音?自動駕駛?遊戲博弈?是用什麼演算法?

        例如說到大數據,對方是在說hadoop?BI?Stream?kafka?
       例如說到機器學習,是在說線性模型?隨機森林?XGBoost? 還是樞紐分析表?

  • Debug
        不管是新同學或是老同學,Debug是無止盡且躲不掉的。面對這些Bug,學習環境是很重要的。上完一個課程或是章節,真要獨立開發代碼時,面對bug或是處理一些問題時,身旁是不是有同事、同學、同伴能一起討論?
        通常這也是最讓人挫折的一塊,安裝包裝不起來、換個平台沒法運行、錯誤紀錄看不懂。科班出身或是從事這領域的,自然能夠找到相關資源。但對新同學來說,就得先考慮一下自己獨力開發時的環境了 。       

       很多新同學是先學工具在去找學習目的,但沒有強大的興趣或是工作需求,python是很難鑽研下去的,光遇到的bug就夠你挫折了以上說的這些其實要回到你學習python的目的了,你是為了上實習課?為了轉行?為了處理工作上的問題?先確認學習目標會讓你學習python(或學習其他程式語言)更有效率

No comments:

Post a Comment