用随机森林算法做手写数字识别

一、前言

        我们之前用随机森林算法做了一个简单的案例,判断天气是否适合出去玩,今天我们使用最经典的手写数字数据集来做一个数字识别预测。

二、代码实现

        废话不多说,我们之间上代码开始讲解:

     1、获取数据集

        我们本次案例使用的是sklearn.datasets中的load_digits函数来加载手写数字数据集,我们先把要用的库和数据集加载进来:

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
digits = load_digits()
X, y = digits.data, digits.target

        ok,我们现在已经导入了数据集了,我们可以查看一下数据集中的数据,就看一下第一张图片吧。

# 显示第一个数字图像
plt.imshow(X[0].reshape(8, 8), cmap='gray')
plt.title(f'Label: {y[0]}')
plt.axis('off')
plt.show()

                                 

        利用matplotlib函数可以将数据集中的图片显示出来,更加直观的看到数据集中的信息。

        2、划分数据集

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

        还是老一套,20%的测试集 。

        3、训练随机森林模型

# 训练随机森林模型
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)
rf_clf.fit(X_train, y_train)

         n_estimators=100:表示使用100棵决策树来构建随机森林。更多的树通常可以提高模型的性能,但也会增加计算时间。
        random_state=42:设置随机种子,以确保每次运行时模型的训练结果一致。
        rf_clf.fit(X_train, y_train):用训练数据X_train和对应的标签y_train来训练随机森林模型。

       4、模型的评估和预测

# 预测与评估
y_pred = rf_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

print(f'模型准确率: {accuracy:.2f}')

                                        

        可以看到模型的准确率还是很高的,我们稍后用测试集的数据来看看实际效果。

三、结语

        我们把测试集的数字拿出来简单检测一下:

# 可视化部分预测结果
def plot_digits(images, labels):
    plt.figure(figsize=(10, 4))
    for index, (image, label) in enumerate(zip(images, labels)):
        plt.subplot(2, 5, index + 1)
        plt.imshow(image.reshape(8, 8), cmap='gray')
        plt.title(label)
        plt.axis('off')


plot_digits(X_test[:10], y_pred[:10])
plt.show()

        可以看到识别的情况不错。

        最后,大家如果觉得对您有帮助的话麻烦点点赞,如果有错误或者纰漏希望您能在评论区指出,帮助大家能更好地理解和掌握相关知识!

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值