Adaboost实现手写数字数据集的分类(sklearn),浅析分类器数目、学习率的影响

本文利用Adaboost算法对手写数字数据集进行分类,通过展示数据、分析迭代次数(分类器数量)对模型性能的影响,以及探讨学习率对模型效果的关键作用。实验表明,增加分类器数量能提升模型表现,而合适的学习率选择对Adaboost算法至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Adaboot对手写数字数据集sklearn.datasets.load_digits进行分类。
1.首先对前五个数字进行了展示
在这里插入图片描述
2.训练AdaboostClassifier,使用AdaBoostClassifier.stagend_predict(x)可以获得分阶段的预测结果。求得对数据集的随着迭代次数增加(弱分类器的增加)的误差变化情况。
在这里插入图片描述
观察可知,随着分类器的增加,Adaboost模型的分类的表现会更好。
3.最后研究了学习率对Adaboost模型的影响。在Adaboost中,学习率即每次新训练的弱分类器对整体预测的影响。选取了,0.125、0.25、0.5、1、2作为学习率使用交叉验证进行对比。
在这里插入图片描述
在这里插入图片描述
观察可得,学习率的选择对Adaboost算法非常重要,一般对一系列备选学习率进行交叉验证。

# coding: utf-8
# Referenzen
# - https://scikit-learn.org/stable/modules/ensemble.html#ada_boost
# [2] T. Hastie, R. Tibshirani and J. Friedman, The Elements of Statistical Learning, Second Edition, Section 10.13.2, Springer, 2009.

from sklearn.tree import DecisionTreeClassifier
import numpy as np
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import utils


def plot_digit_dataset(X_train: np.ndarray, y_train: np.ndarray) -> None:
    """Plots the first 5 images of the digit dataset."""
    plt.figure()
    for i, (x_i, y_i) in enumerate(zip(X_train[:5], y_train[:5]), start=1):
        plt.subplot(150+i)
        plt.imshow(x_i.reshape(8,8),cmap="gray"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值