一、实验目的
熟悉Python 的基本操作,掌握对数据集的读写实现、对模型性能的评估实现的能力;
加深对训练集、测试集、N折交叉验证、模型评估标准的理解。
二、实验内容
(1)利用pandas库从本地读取iris数据集;
(2)从scikit-learn 库中直接加载iris 数据集;
(3)实现五折交叉验证进行模型训练;
(4)计算并输出模型的准确度、精度、召回率和F1值。
三、算法步骤、代码、及结果
- 算法伪代码
导入必要的库(如pandas, sklearn等)
加载数据集
方法1:通过pandas读取本地CSV文件
方法2:通过scikit-learn加载Iris数据集
将数据分为特征和标签
使用五折交叉验证(KFold)进行模型训练
计算并输出评估指标(准确度、精度、召回率、F1值)
- 算法主要代码
(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)调用库方法
- load_iris() — 加载 Iris 数据集
作用:load_iris() 是 scikit-learn 提供的函数,用于加载 Iris 数据集。该数据集包含 150 个样本,每个样本有 4 个特征(如花萼长度、花萼宽度等),以及目标变量(花的种类)。
iris.data:特征矩阵,包含 150 行(样本)和 4 列(特征)。
iris.target:标签数组,包含每个样本对应的类别标签。
- RandomForestClassifier() — 随机森林分类器
n_estimators:这是随机森林中的树的数量,即要创建的决策树的数量。默认值为 100。
作用:决定了模型的复杂度,树越多,模型可能越强,但计算成本也会增加。
- cross_val_score() — 交叉验证
cross_val_score(model, X, y, cv=kf, scoring=scorer)
作用:cross_val_score 用于执行交叉验证。它将数据集分成 cv 折(此例为 5 折),每次训练并测试模型,并返回每折的评分。
参数:
model:要评估的模型。
X:特征矩阵。
y:目标标签数组。
cv:折数,即数据集将被分为 5 份进行五折交叉验证。
scoring:指定评估指标。
- make_scorer() — 自定义评估指标
参数:
scoring: 用于评估模型的函数。通常是一个 Scikit-learn 中的评分函数,如 accuracy_score, precision_score, recall_score, f1_score 等,或者是自定义的评分函数。
kwargs:任何传递给评分函数的附加参数(例如,average 参数)。
- 结果截图(包括:准确率;精度、召回率、F1)
(1)准确率:
(2)精度,召回率,F1
四、心得体会
这次实验中我使用了 scikit-learn 库加载了 Iris 数据集,并使用随机森林分类器进行模型训练与评估。通过五折交叉验证,我评估了模型的准确度、精度、召回率和 F1 值,学到了如何全面衡量一个模型的表现。这个过程让我更好地理解了机器学习中的交叉验证、模型评估指标以及如何使用现有库高效完成任务,提升了我在实践中应用机器学习的能力。我也意识到在模型调优和特征选择方面还有很多提升空间
浙公网安备 33010602011771号