深度学习(DL)是机器学习(ML)的主要算法,而机器学习(ML)是人工智能(AI)的核心功能。
机器学习分类三类:监督学习,非监督学习,强化学习。
监督学习一般使用两种类型的目标变量:标称型和数值型。
为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完成之后输入测试样本。
选择合适的算法:
首先考虑使用机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。确定选择监督学习算法之后,需要进一步确定目标变量的类型,如果目标变量是离散型,则可以选择分类器算法;如果目标变量是连续型的数值,则需要选择回归算法。
一般来说,发现最好算法的关键环节是反复试错的迭代过程。
使用机器学习算法的一般步骤:
1. 收集数据
2. 准备输入数据
3. 分析输入数据(肉眼分析,找出明显错误的数据)
4. 训练算法
5. 测试算法
6. 使用算法
kNN算法:
找出未知数据的特征与已知数据的特征最近的前k个一致数据,在这前k个数据中出现最多的那个结果就是计算出的结果。
特征的度量可能需要归一化处理。
机器学习分类三类:监督学习,非监督学习,强化学习。
监督学习一般使用两种类型的目标变量:标称型和数值型。
为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完成之后输入测试样本。
选择合适的算法:
首先考虑使用机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。确定选择监督学习算法之后,需要进一步确定目标变量的类型,如果目标变量是离散型,则可以选择分类器算法;如果目标变量是连续型的数值,则需要选择回归算法。
一般来说,发现最好算法的关键环节是反复试错的迭代过程。
使用机器学习算法的一般步骤:
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