我最推薦的一本技術書《機器學習實戰》

xiaocaicai發表於2020-04-29

​ 最近我和一對夫婦共進晚餐,他們問我從事什麼職業,我回應道:“機器學習。”妻子回頭問丈夫:“親愛的,什麼是機器學習?”她的丈夫答道:“T-800型終結者。” 《機器學習實戰》第一章


​ 什麼是機器學習?相信很多人都會脫口而出:”機器人”,不過機器學習並不是科幻片裡所說的機器人,雖然有關聯,但是並不相同。實際上,機器學習是一門古老的技術,從上個世紀40年底就已經出現了,它是人工智慧的一個分支,另一個是深度學習。

機器學習可分為監督學習、非監督學習和強化學習。

監督學習又可分為:

  • k-近鄰演算法;
  • 線性迴歸;
  • 樸素貝葉斯演算法;
  • 支援向量機;
  • 決策樹;
  • 邏輯迴歸;

無監督學習可分為:

  • 聚類;
  • 密度統計

半監督學習

​ 機器學習橫跨電腦科學、工程技術和統計學等多個學科,需要多學科的專業知識。稍後你就能瞭解到,它也可以作為實際工具應用於從政治到地質學的多個領域,解決其中的很多問題。甚至可以這麼說,機器學習對於任何需要解釋並運算元據的領域都有所裨益。

​ 既然機器學習這麼牛掰,那作為初學者該如何入門呢?首先,要選擇程式語言,主流的計算機語言有Java,C++,C,GO,python,R,PHP,JS等,而其中比較簡單容易入門的是python,並且python語言是科學家首選的使用語言,有大量的機器學習庫,如Tensorflow、Keras、PyTorch等,你可以非常方便的進行學習。其次,最好有一本入門級的書籍教程,在這裡,這本《機器學習實戰》就很適合新手,每一章講解一個演算法,從零開始構建,學完了基本就瞭解了演算法原理。

這裡從中摘要一章如下:

def createTree(dataSet,labels): 
    classList = [example[-1] for example in dataSet] 
    classList = [example[-1] for example in dataSet]
    #❶ (以下兩行)類別完全相同則停止繼續劃分
    if classList.count(classList[0]) == len(classList):
         return classList[0]
    #❷ (以下兩行)遍歷完所有特徵時返回出現次數最多的
    if len(dataSet[0]) == 1:
         return majorityCnt(classList)
     bestFeat = chooseBestFeatureToSplit(dataSet)
    bestFeatLabel = labels[bestFeat]
    myTree = {bestFeatLabel:{}}
   #❸ 得到列表包含的所有屬性值
   del(labels[bestFeat])
   featValues = [example[bestFeat] for example in dataSet]
   uniqueVals = set(featValues)
   for value in uniqueVals:
        subLabels = labels[:]
        myTree[bestFeatLabel][value] = createTree(splitDataSet
                                      (dataSet, bestFeat, value),subLabels)
   return myTree

這本書裡面用到的數學知識不多,主要講解的是程式碼邏輯,一般來說不需要什麼先修知識就可以上手,不過讀者最好先學習一下線性代數、概率論的基礎知識,再來看這本書會事半功倍!

相關文章