如何将tree_vote中的类别投票从取多数改为取树预测均值
修改tree_vote函数实现均值预测
要把原函数的多数投票逻辑改成取各树预测结果的均值,只需要替换掉投票计算的核心代码即可,具体修改如下:
def tree_vote(forest, data): # 将所有预测结果添加到列表中 predictions = [] for tree in forest: predictions.append(predict(data, tree)) # 构建每个样本的预测结果列表 predictions_per_object = list(zip(*predictions)) # 每个样本的最终预测结果改为所有树预测值的均值 voted_predictions = [] for obj in predictions_per_object: # 计算当前样本所有树预测结果的平均值 mean_pred = sum(obj) / len(obj) voted_predictions.append(mean_pred) return voted_predictions train_answers = tree_vote(my_forest_1, train_data) test_answers = tree_vote(my_forest_1, test_data)
关键修改点:
- 移除了原代码中
max(set(obj), key=obj.count)的多数投票逻辑 - 替换为
sum(obj) / len(obj),直接计算当前样本所有树预测结果的算术平均值 - 如果需要对均值进行取整(比如预测结果原本是整数类别),可以将
mean_pred改为round(sum(obj)/len(obj))或者根据需求做其他处理
内容的提问来源于stack exchange,提问作者Toshik
相关产品推荐
相关产品推荐

