def AdaBoost(L, K):\n",
- " """[Figure 18.34]"""\n",
- " def train(dataset):\n",
- " examples, target = dataset.examples, dataset.target\n",
- " N = len(examples)\n",
- " epsilon = 1. / (2 * N)\n",
- " w = [1. / N] * N\n",
- " h, z = [], []\n",
- " for k in range(K):\n",
- " h_k = L(dataset, w)\n",
- " h.append(h_k)\n",
- " error = sum(weight for example, weight in zip(examples, w)\n",
- " if example[target] != h_k(example))\n",
- " # Avoid divide-by-0 from either 0% or 100% error rates:\n",
- " error = clip(error, epsilon, 1 - epsilon)\n",
- " for j, example in enumerate(examples):\n",
- " if example[target] == h_k(example):\n",
- " w[j] *= error / (1. - error)\n",
- " w = normalize(w)\n",
- " z.append(math.log((1. - error) / error))\n",
- " return WeightedMajority(h, z)\n",
- " return train\n",
- "
\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- "