24.11.3

实验一:数据准备与模型评估
一、实验目的
熟悉 Python 的基本操作,掌握对数据集的读写实现、对模型性能的评估实现的能力;加深对训练集、测试集、N 折交叉验证、模型评估标准的理解。
二、实验内容
(1)利用 pandas 库从本地读取 iris 数据集;
(2)从 scikit-learn 库中直接加载 iris 数据集;
(3)实现五折交叉验证进行模型训练;
(4)计算并输出模型的准确度、精度、召回率和 F1 值。
三、算法步骤、代码、及结果

  1. 算法伪代码
    加载数据集(鸢尾花数据集)
    载入特征数据 X 和目标标签 y
    初始化分类器
    使用随机森林分类器,设定树的数量为 100,随机种子为 42
    划分数据集
    将数据集划分为训练集和测试集,其中 80% 用于训练,20% 用于测试
    训练分类器
    使用训练集 X_train 和 y_train 训练随机森林分类器
    预测
    使用测试集 X_test 进行预测,得到预测标签 y_pred
    评估模型
    计算并输出分类报告,包括各类的精确度、召回率、F1 分数等
  2. 算法主要代码
    (1)完整源代码
    import pandas as pd

df = pd.read_csv('Iris数据集/iris.csv')

查看数据的前几行

print(df.head())
from sklearn.datasets import load_iris

加载 Iris 数据集

iris = load_iris()

查看数据和目标

X = iris.data
y = iris.target

print(X[:5]) # 查看前五个样本
print(y[:5]) # 查看前五个标签
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris

加载数据

iris = load_iris()
X = iris.data
y = iris.target

初始化随机森林分类器

rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)

五折交叉验证

scores = cross_val_score(rf_classifier, X, y, cv=5)

print(f'五折交叉验证的准确度: {scores}')
print(f'五折交叉验证的平均准确度: {scores.mean():.4f}')
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris

加载数据

iris = load_iris()
X = iris.data
y = iris.target

初始化随机森林分类器

rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)

划分数据集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

训练随机森林分类器

rf_classifier.fit(X_train, y_train)

预测

y_pred = rf_classifier.predict(X_test)

生成分类报告

report = classification_report(y_test, y_pred, target_names=iris.target_names)
print(report)

(2)调用库方法
train_test_split
功能: 将数据集随机划分为训练集和测试集
参数说明
X: 特征数据,形状为 [n_samples, n_features]。
y: 目标标签,形状为 [n_samples]。
默认值: None,表示 75% 用作训练集,剩下的 25% 用作测试集。
train_size: 训练集的大小,取值范围 (0.0, 1.0)。如果指定了 test_size,则无需指定该值。
默认值: None,如果没有指定 test_size,则根据数据自动分配。
random_state: 随机种子,保证实验可重复。
默认值: None,如果未指定,系统会生成一个随机种子。
默认值: None,表示不进行类别分布的平衡。
RandomForestClassifier
功能: 随机森林分类器,用于多分类问题。它是由多个决策树组成的集成模型。
参数说明
n_estimators: 随机森林中树的数量。默认值: 100。
criterion: 划分标准,决定了如何分裂节点。
可选值:'gini':基尼不纯度(默认值)。
'entropy':信息增益。
max_depth: 树的最大深度。
默认值: None,表示树会一直生长直到所有叶节点都是纯净的
min_samples_split: 划分一个内部节点所需的最小样本数
默认值: 2,表示每次节点分裂时最少需要 2 个样本
min_samples_leaf: 叶节点的最小样本数
默认值: 1,表示叶节点至少需要 1 个样本
random_state: 随机数种子,用于控制随机性,确保结果可复现
classification_report
功能: 生成分类的性能报告,包括准确率(accuracy)、精度(precision)、召回率(recall)和 F1 值(F1-score)
参数说明
y_true: 真实标签
y_pred: 预测标签
target_names: 类别名称列表(可选),例如分类任务中的不同类别标签
默认值: None,如果未指定,会使用标签的整数值
sample_weight: 样本权重(可选),用于加权计算
默认值: None,即每个样本的权重相等
digits: 报告中小数点后的位数
默认值: 2,表示结果保留两位小数
3. 结果截图(包括:准确率;精度、召回率、F1)
本地调用Iris数据集结果

四、心得体会
通过本次实验,我熟悉了Python的基本操作,掌握了数据集的读写实现以及模型性能评估的具体方法。实验加深了我对训练集、测试集划分的理解,并通过实践进一步巩固了对N折交叉验证和不同模型评估标准的认识。这让我更清楚模型验证的重要性及其在实际应用中的作用。

posted @ 2024-11-03 22:25  起名字真难_qmz  阅读(26)  评论(0)    收藏  举报