第1关:什么是集成学习
任务描述
本关任务:根据本节课所学知识完成本关所设置的选择题。
第2关: Boosting
任务描述
本关任务:根据本节课所学知识完成本关所设置的选择题。
第3关:Adaboost算法流程
任务描述
本关任务:用Python实现Adaboost,并通过鸢尾花数据集中鸢尾花的2种属性与种类对Adaboost模型进行训练。我们会调用你训练好的Adaboost模型,来对未知的鸢尾花进行分类。
#encoding=utf8
import numpy as np
#adaboost算法
class AdaBoost:
'''
input:n_estimators(int):迭代轮数
learning_rate(float):弱分类器权重缩减系数
'''
def __init__(self, n_estimators=50, learning_rate=1.0):
self.clf_num = n_estimators
self.learning_rate = learning_rate
def init_args(self, datasets, labels):
self.X = datasets
self.Y = labels
self.M, self.N = datasets.shape
# 弱分类器数目和集合
self.clf_sets = []
# 初始化weights
self.weights = [1.0/self.M]*self.M
# G(x)系数 alpha
self.alpha = []
def _G(self, features, labels, weights):
'''
input:features(ndarray):数据特征
labels(ndarray):数据标签
weights(ndarray):样本权重系数
'''
#********* Begin *********#
m = len(features)
error = 100000.0 # 无穷大
beat_v = 0.0
#单维features
features_min = min(features)
features_max = max(features)
n_step = (features_max-features_min+self.learning_rate) // self.learning_rate
direct,compare_array = None,None
for i