回覆列表
-
1 # 太科羅技
-
2 # 嵌入式宏思微想
首先,題目有個誤區,語言和演算法不要捆綁在一起,它們是兩回事。語言是語法,語義,語句,型別,結構等等元素。演算法是描述需求和實現功能的事情,同一個演算法可以用不同語言去程式設計實現。
演算法,需要分類。比如做人工智慧的,有人工智慧演算法,做網頁功能如爬蟲,有爬蟲演算法。總之,不同領域有不同的演算法。最簡單有效的學習方法是,學習用Python描述的演算法。
Python作為一門膠水語言,言下之意,主要是方便粘合使用,即可以用各種豐富的生態庫,生態包。這時,僅需學習介面即可。
建議先把python語言先學習透徹,再來研究演算法部分,同時還要注意相關數學知識的學習。python是一門非常簡潔的程式語言,上手很容易,但要是學習python下的演算法開發的話,還是要花費一些功夫來認真學習。那麼該如何來學好python的演算法開發呢?下面我將從四個方面來簡要介紹一下(插圖為推薦的經典教材)。
python基礎程式設計的學習。這一部分需要我們掌握python的基本程式設計方法,python的版本有python2和python3之分,我建議直接學習python3系列版本(python3系列是目前的主流)。Python的基礎程式設計包括基本語句(變數,列表,迴圈的操作以及函式的編寫),類的實現,檔案IO,資料視覺化操作等等。只有熟練掌握這些基本程式設計技法,才能夠進入下一階段的學習。
基本資料結構與演算法的學習。這一部分對程式設計者的要求就提升了一步,需要開發者在熟練python基本程式設計方法的基礎上進行學習。那麼需要學習哪些知識呢?這裡我列舉一部分:線性表及連結串列,字串操作,棧與佇列,二叉樹與樹,圖,字典與集合,排序問題等知識點。這些知識點需要學習者在看完書用自己的理解再用程式語言編寫一遍,只有做到這一點,這一關才算透過。
進入實戰練習。我建議選擇機器學習方向,因為這一領域的演算法從數學的角度來看,都是可以推匯出來的(有程式設計指導依據)。這一部分同樣需要自己對演算法進行python程式設計實現,需要掌握的內容有:貝葉斯分類器,決策樹,整合學習,SVM(支援向量機),基本神經網路等等。
高階實戰聯絡。在有了機器學習的基礎上,我建議學習深度學習理論。網際網路上深度學習的資源很多(這裡不要求自己實現深度學習框架,但要能夠熟練使用這些框架工具),可以選擇一個比較流行的框架進行學習(比如mxnet,pytorch都對python有很好的支援),這裡可以對照教程自己完成訓練及檢測,然後把訓練的模型應用在自己編寫的python程式中。接下來可以自己對經典網路引數進行更改,來實現自己想要的功能。