​ 最近我和一对夫妇共进晚餐,他们问我从事什么职业,我回应道:“机器学习。”妻子回头问丈夫:“亲爱的,什么是机器学习?”她的丈夫答道:“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

这本书里面用到的数学知识不多,主要讲解的是代码逻辑,一般来说不需要什么先修知识就可以上手,不过读者最好先学习一下线性代数、概率论的基础知识,再来看这本书会事半功倍!