西南交通大学【机器学习实验9】

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

实验目的

参考随机森林,以决策树为基学习器,构建bagging集成器用于多分类任务。

实验要求

编程实现随机森林模型,对手写数字识别数据集进行分类。基模型采用决策树模型,划分属性指标采用信息熵指标,随机选取属性子集数目为50。将决策树数量T依次设置为1,2,…,20,计算随机森林在测试集上的精度,并绘制随机森林精度随基模型数量增加的变化曲线。

实验环境

Python,numpy,matplotlib,sklearn

实验代码

import numpy as np

from matplotlib.ticker import MultipleLocator

from sklearn.tree import DecisionTreeClassifier

import matplotlib.pyplot as plt

import matplotlib





matplotlib.use("TKAgg")





# 计算投票结果

def vote(predictions_matrix):

    n_samples = predictions_matrix.shape[0]

    final_predictions = np.zeros(n_samples, dtype=int)



    for i in range(n_samples):

        row = predictions_matrix[i]

        # 找出所有可能类别及其计数

        unique, counts = np.unique(row, return_counts=True)

        # 选出现次数最多的类别

        final_predictions[i] = unique[np.argmax(counts)]



    return final_predictions





# 读取训练数据

train_data = np.genfromtxt("experiment_09_training_set.csv", delimiter=",", skip_header=1)

columnOfTrainDataset = train_data.shape[1]



# 读取测试数据

test_data = np.genfromtxt("experiment_09_testing_set.csv", delimiter=",", skip_header=1)

test_x = test_data[:, 1: columnOfTrainDataset]

test_y = test_data[:, 0]



# 设置T和随机种子

T = 20

np.random.seed(42)



# 准备画图向量

x_line = np.arange(1, T+1)

y_line = np.zeros(T)



# 循环

for number in range(1, T+1):

    # 存储决策树

    models = []

    # 训练基模型

    for i in range(number):

        # 随机取样得到下标

        index = np.random.choice(train_data.shape[0], size=train_data.shape[0], replace=True)

        # 通过下标得到x和y

        train_x = train_data[index, 1:columnOfTrainDataset]

        train_y = train_data[index, 0]

        # 设置基模型为决策树模型,使用信息熵作为划分属性指标

        tree = DecisionTreeClassifier(criterion='entropy', max_features=50)

        tree.fit(train_x, train_y)

        # 添加模型

        models.append(tree)

   

    # 初始化预测结果

    pred = np.zeros((test_data.shape[0], number))



    # 遍历决策树模型

    for i, tree in enumerate(models):

        # 进行预测

        pred[:, i] = tree.predict(test_x)

    # 得到预测结果

    pred_y = vote(pred)

    # 计算精度

    accuracy = np.sum(pred_y == test_y) / test_y.shape[0]

    # 打印结果

    print(f"T: {number} -> accuracy: {accuracy: .4f}")

    y_line[number-1] = accuracy



# 画图

plt.figure(1)

plt.plot(x_line, y_line, color='b', linewidth=1.5, label='Accuracy line')

plt.xlabel("T", fontsize=12)

plt.ylabel("Accuracy", fontsize=12)

plt.title("Accuracy line", fontsize=14)

plt.legend(loc='upper right', frameon=True)

plt.grid(alpha=0.3, linestyle=':')

plt.ylim(0, 1.1)

ax = plt.gca()

ax.xaxis.set_major_locator(MultipleLocator(2))

plt.tight_layout()

plt.show()

结果分析

测试集上精度

T

1

2

3

4

5

6

7

8

9

10

精度

0.7980

0.8022

0.8730

0.9036

0.9163

0.9237

0.9303

0.9373

0.9386

0.9421

T

11

12

13

14

15

16

17

18

19

20

精度

0.9447

0.9457

0.9489

0.9513

0.9500

0.9505

0.9547

0.9553

0.9548

0.9561

精度随T增加的变化曲线

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 西南交通大学机器学习实验资料与指南 西南交通大学作为国内知名高校,在人工智能领域尤其是机器学习方向有着较为完善的课程体系和实践资源。以下是关于其机器学习实验的相关资料及可能的指导内容: #### 1. **实验目标** 机器学习实验的目标通常围绕理论知识的实际应用展开,旨在帮助学生掌握常见算法的设计原理及其在实际场景中的实现方式[^3]。 #### 2. **主要实验内容** 根据公开的信息以及类似院校的教学安排,可以推测西南交通大学机器学习实验可能会涉及以下主题: - 数据预处理:包括缺失值填充、特征提取与降维等操作。 - 基础模型训练:如线性回归、逻辑回归、支持向量机(SVM)、决策树等经典算法的应用。 - 高级模型探索:深入研究随机森林、梯度提升树(GBDT)、卷积神经网络(CNN)等内容。 - 平台工具使用:熟悉开源框架TensorFlow、PyTorch或微软Azure ML等环境的操作流程。 ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression # 示例代码展示简单的线性回归建模过程 X = np.random.rand(100, 1) y = 4 + 3 * X + np.random.randn(100, 1) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = LinearRegression() model.fit(X_train, y_train.ravel()) print(f'Coefficients: {model.coef_}') ``` 上述代码片段展示了如何利用Python库`scikit-learn`快速构建并评估一个基本的线性回归模型。 #### 3. **推荐参考资料** 对于希望深入了解该领域的同学来说,除了官方教材外还可以参考如下书籍和技术文档: - 关于认知心理的基础理解可查阅《认知心理学》Robert Solso版本; - 若想进一步了解大脑工作机制,则建议阅读《神经生物学-从神经元到脑》John Nicholls著作; - 对于具体的技术实施细节,《脑机接口导论》Rajesh Rao提供了宝贵的见解。 #### 4. **外部补充资源** 如果校内提供的材料不足以满足个人需求,也可以考虑通过其他渠道获取更多信息。例如参加由专业机构主办的数据分析类短期培训项目,像北京赛博尔医药科技有限公司定期开设的功能磁共振数据分析培训班就非常值得借鉴[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还有糕手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值