机器学习实战 第1,2章

深度学习(DL)是机器学习(ML)的主要算法,而机器学习(ML)是人工智能(AI)的核心功能。

机器学习分类三类:监督学习,非监督学习,强化学习。

监督学习一般使用两种类型的目标变量:标称型和数值型。

为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完成之后输入测试样本。


选择合适的算法:
首先考虑使用机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。确定选择监督学习算法之后,需要进一步确定目标变量的类型,如果目标变量是离散型,则可以选择分类器算法;如果目标变量是连续型的数值,则需要选择回归算法。
一般来说,发现最好算法的关键环节是反复试错的迭代过程。


使用机器学习算法的一般步骤:
1. 收集数据
2. 准备输入数据
3. 分析输入数据(肉眼分析,找出明显错误的数据)
4. 训练算法
5. 测试算法
6. 使用算法


kNN算法:
找出未知数据的特征与已知数据的特征最近的前k个一致数据,在这前k个数据中出现最多的那个结果就是计算出的结果。
特征的度量可能需要归一化处理。


决策树算法:

from math import log

def shannonEntropy(dataSet):
    labels = {}
    count = len(dataSet)
    for row in dataSet:
        label = row[-1]
        labels[label] = labels.get(label, 0) + 1

    ret = 0.0
    for label in labels:
        prob = float(labels[label]) / count
        ret -= prob * log(prob, 2)

    return ret

def createDataSet():
    dataSet = [[1, 1, 'yes'],
               [1, 1, 'yes'],
               [1, 0, 'no'],
               [0, 1, 'no'],
               [0, 1, 'no']]
    labels = ['no surfacing', 'flippers']
    return dataSet, labels

def splitDataSet(dataSet, axis, value):
    retDataSet = []
    for row in dataSet:
        if row[axis] == value:
            reducedVec = row[:axis]
            reducedVec.extend(row[axis + 1:])
            retDataSet.append(reducedVec)

    return retDataSet

def chooseBestFeatureToSplit(dataSet):
    numFeatures = len(dataSet[0]) - 1
    baseEntropy = shannonEntropy(dataSet)
    print baseEntropy
    bestInfoGain = 0.0
    bestFeature = -1
    for i in range(numFeatures):
        featList = [tmp[i] for tmp in dataSet]
        uniqueVals = set(featList)
        newEntropy = 0.0
        for value in uniqueVals:
            subDataSet = splitDataSet(dataSet, i, value)
            prob = len(subDataSet) / float(len(dataSet))
            newEntropy += prob * shannonEntropy(subDataSet)
        infoGain = baseEntropy - newEntropy
        print newEntropy
        if infoGain > bestInfoGain:
            bestInfoGain = infoGain
            bestFeature = i

    return bestFeature

def createTree:
	# createTree
	pass


猜你喜欢

转载自blog.csdn.net/sumaoqing123/article/details/79452069
今日推荐