实验一:数据准备与模型评估

一、实验目的

熟悉Python 的基本操作,掌握对数据集的读写实现、对模型性能的评估实现的能力;

加深对训练集、测试集、N折交叉验证、模型评估标准的理解。

二、实验内容

(1)利用pandas库从本地读取iris数据集;

(2)从scikit-learn 库中直接加载iris 数据集;

(3)实现五折交叉验证进行模型训练;

(4)计算并输出模型的准确度、精度、召回率和F1值。

三、算法步骤、代码、及结果

  1. 算法伪代码

导入必要的库(如pandas, sklearn等)

加载数据集

   方法1:通过pandas读取本地CSV文件

   方法2:通过scikit-learn加载Iris数据集

将数据分为特征和标签

使用五折交叉验证(KFold)进行模型训练

计算并输出评估指标(准确度、精度、召回率、F1值)

  1. 算法主要代码

(1)完整源代码

import pandas as pd

from sklearn.model_selection import cross_val_score, KFold

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, f1_score

from sklearn.datasets import load_iris

 

# 方法 1:从本地文件加载数据集

# file_path = "./iris.csv"  

# df_local = pd.read_csv(file_path)

# X_local = df_local.iloc[:, :-1].values  # 特征列

# y_local = df_local.iloc[:, -1].values   # 标签列

 

# 方法 2:从 sklearn 加载 Iris 数据集

data = load_iris()

 

X_sklearn = data.data  # 特征矩阵

y_sklearn = data.target  # 标签

 

X = X_sklearn

y = y_sklearn

 

kf = KFold(n_splits=5)

model = RandomForestClassifier()

 

scoring = {

    '准确率': make_scorer(accuracy_score),

    '精度': make_scorer(precision_score, average='weighted'),

    '召回率': make_scorer(recall_score, average='weighted'),

    'F1': make_scorer(f1_score, average='weighted')

}

 

results = {key: cross_val_score(model, X, y, cv=kf, scoring=scorer).mean() for key, scorer in scoring.items()}

 

for metric, score in results.items():

    print(f"{metric.capitalize()}: {score:.4f}")

 

(2)调用库方法

  1. load_iris() — 加载 Iris 数据集

作用:load_iris() 是 scikit-learn 提供的函数,用于加载 Iris 数据集。该数据集包含 150 个样本,每个样本有 4 个特征(如花萼长度、花萼宽度等),以及目标变量(花的种类)。

iris.data:特征矩阵,包含 150 行(样本)和 4 列(特征)。

iris.target:标签数组,包含每个样本对应的类别标签。

  1. RandomForestClassifier() — 随机森林分类器

n_estimators:这是随机森林中的树的数量,即要创建的决策树的数量。默认值为 100。

作用:决定了模型的复杂度,树越多,模型可能越强,但计算成本也会增加。

  1. cross_val_score() — 交叉验证

cross_val_score(model, X, y, cv=kf, scoring=scorer)

作用:cross_val_score 用于执行交叉验证。它将数据集分成 cv 折(此例为 5 折),每次训练并测试模型,并返回每折的评分。

参数:

model:要评估的模型。

X:特征矩阵。

y:目标标签数组。

cv:折数,即数据集将被分为 5 份进行五折交叉验证。

scoring:指定评估指标。

  1. make_scorer() — 自定义评估指标

参数:

scoring: 用于评估模型的函数。通常是一个 Scikit-learn 中的评分函数,如 accuracy_score, precision_score, recall_score, f1_score 等,或者是自定义的评分函数。

kwargs:任何传递给评分函数的附加参数(例如,average 参数)。

  1. 结果截图(包括:准确率;精度、召回率、F1)

(1)准确率:

(2)精度,召回率,F1

四、心得体会

这次实验中我使用了 scikit-learn 库加载了 Iris 数据集,并使用随机森林分类器进行模型训练与评估。通过五折交叉验证,我评估了模型的准确度、精度、召回率和 F1 值,学到了如何全面衡量一个模型的表现。这个过程让我更好地理解了机器学习中的交叉验证、模型评估指标以及如何使用现有库高效完成任务,提升了我在实践中应用机器学习的能力。我也意识到在模型调优和特征选择方面还有很多提升空间

posted on 2024-12-06 21:49  leapss  阅读(41)  评论(0)    收藏  举报