Desc: 对特定模型的树进行预测,可以是 回归树 也可以是 模型树 Args: tree -- 已经训练好的树的模型 inData -- 输入的测试数据 modelEval -- 预测的树的模型类型,可选值为 regTreeEval(回归树) 或 modelTreeEval(模型树),默认为回归树 Returns: 返回预测值
(tree, inData, modelEval=regTreeEval)
| 349 | # 此函数自顶向下遍历整棵树,直到命中叶节点为止,一旦到达叶节点,它就会在输入数据上 |
| 350 | # 调用modelEval()函数,该函数的默认值为regTreeEval() |
| 351 | def treeForeCast(tree, inData, modelEval=regTreeEval): |
| 352 | """ |
| 353 | Desc: |
| 354 | 对特定模型的树进行预测,可以是 回归树 也可以是 模型树 |
| 355 | Args: |
| 356 | tree -- 已经训练好的树的模型 |
| 357 | inData -- 输入的测试数据 |
| 358 | modelEval -- 预测的树的模型类型,可选值为 regTreeEval(回归树) 或 modelTreeEval(模型树),默认为回归树 |
| 359 | Returns: |
| 360 | 返回预测值 |
| 361 | """ |
| 362 | if not isTree(tree): |
| 363 | return modelEval(tree, inData) |
| 364 | if inData[tree['spInd']] <= tree['spVal']: |
| 365 | if isTree(tree['left']): |
| 366 | return treeForeCast(tree['left'], inData, modelEval) |
| 367 | else: |
| 368 | return modelEval(tree['left'], inData) |
| 369 | else: |
| 370 | if isTree(tree['right']): |
| 371 | return treeForeCast(tree['right'], inData, modelEval) |
| 372 | else: |
| 373 | return modelEval(tree['right'], inData) |
| 374 | |
| 375 | |
| 376 | # 预测结果 |
no test coverage detected