1. 第35页代码错误
书中第35页的代码中存在一个错误。正确的代码如下:
myDat,labels = trees.createDataSet()
print(trees.calcShannonEnt(myDat))
myDat[0][-1] = 'maybe'
print(trees.calcShannonEnt(myDat))
myDat[0][-1] = 'yes'
print(trees.calcShannonEnt(myDat))
2. 第67页笔误
书中第67页的第二段的第一句话存在笔误,应该是“在随机抽取样本时,每个样本被抽中的概率都是相等的”,而不是“每个特征被选中的概率都是相等的”。
3. 第82页代码错误
书中第82页的代码中存在一个错误。正确的代码如下:
myDat,labels = trees.createDataSet()
myTree = trees.createTree(myDat,labels)
print(myTree)
4. 第95页代码错误
书中第95页的代码中存在一个错误。正确的代码如下:
def createTree(dataSet,labels):
classList = [example[-1] for example in dataSet]
if classList.count(classList[0]) == len(classList):
return classList[0]
if len(dataSet[0]) == 1:
return trees.majorityCnt(classList)
bestFeat = trees.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(trees.splitDataSet\
(dataSet, bestFeat, value),subLabels)
return myTree
1. 阅读源代码
如果你想深入了解机器学习实战的原理和实现细节,可以查看书中提供的源代码。这些源代码包含了书中的所有算法和实现细节,可以帮助你更好地理解和应用机器学习实战。
2. 尝试不同的数据集
机器学习实战提供了一些示例数据集,但这些数据集可能不适合你的具体问题。因此,你可以尝试使用其他数据集来验证你的算法和模型。Kaggle是一个很好的数据竞赛平台,你可以在上面找到各种各样的数据集和挑战。
3. 调整超参数
机器学习算法中的超参数对模型的性能和泛化能力有很大的影响。调整超参数可以帮助你找到最优的模型和参数组合。你可以使用交叉验证等技术来评估不同超参数设置的性能。
《机器学习实战》是一本非常好的机器学习实战教材,但难免存在一些错误。本文提供了一些勘误和实用技巧,希望能帮助读者更好地学习和应用机器学习实战。