11.23

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

 

一、实验目的

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

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

 

二、实验内容

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

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

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

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

 

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

   1. 算法伪代码

导入 NumPy

导入 sklearn.datasets

导入 pandas

导入 sklearn.model_selection

导入 sklearn.ensemble

导入 sklearn.metrics

 

加载 iris 数据集

  将特征数据存储在 X

  将目标变量存储在 y

 

将数据转换为 DataFrame

  创建 DataFrame 对象 iris_df

  打印 iris_df 的前几行

 

初始化随机森林分类器

  创建 RandomForestClassifier 对象 rf_classifier

 

设置五折交叉验证

  创建 KFold 对象 kf

 

定义多个评分函数

  创建字典 scoring 包含多个评分指标

 

进行多指标交叉验证

   rf_classifier 进行交叉验证

  传入 X, y, kf scoring

 

输出每个指标的平均值

  遍历交叉验证结果

  对于每个以 'test_' 开头的指标

打印指标名称和平均值

 

   2. 算法主要代码

1)完整源代码

import numpy as np
from sklearn.datasets import load_iris

# 加载iris数据集
iris = load_iris()
X, y = iris.data, iris.target

import pandas as pd

# 将数据转换为DataFrame,便于查看
iris_df = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                       columns= iris['feature_names'] + ['target'])
print(iris_df.head())

from sklearn.model_selection import cross_val_score, cross_validate, KFold
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, f1_score

# 初始化随机森林分类器
rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)

# 设置五折交叉验证
kf = KFold(n_splits=5, shuffle=True, random_state=42)

# 定义多个评分函数
scoring = {
    'accuracy': make_scorer(accuracy_score),
    'precision': make_scorer(precision_score, average='weighted'),
    'recall': make_scorer(recall_score, average='weighted'),
    'f1': make_scorer(f1_score, average='weighted')
}

# 进行多指标交叉验证
results = cross_validate(rf_classifier, X, y, cv=kf, scoring=scoring)

# 输出每个指标的平均值
for metric, values in results.items():
    if metric.startswith('test_'):
        print(f'{metric[5:]}: {values.mean():.4f}')

 

2)调用库方法

pandas

用途:用于数据处理和分析。它提供了数据结构(如 DataFrame)和数据操作工具,使得数据处理更加方便和高效。

主要功能:

读取和写入不同格式的数据文件(如 CSVExcelSQL 数据库等)。

数据清洗和预处理。

数据筛选、排序、分组等操作。

数据可视化(结合 matplotlib 等库)。

numpy

用途:用于数值计算。它提供了多维数组对象(ndarray)和其他数学运算工具,是许多科学计算库的基础。

主要功能:

数组操作(如创建、重塑、切片等)。

数学和逻辑运算。

线性代数和傅里叶变换等高级数学运算。

scikit-learn

用途:用于机器学习。它是一个强大的机器学习库,提供了大量的机器学习算法和工具,包括数据预处理、模型选择、评估等。

主要功能:

机器学习算法(如分类、回归、聚类等)。

数据预处理(如标准化、编码等)。

模型选择和评估(如交叉验证、网格搜索等)。

特征选择和降维。

 

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

 

1)准确率:0.9600

 

2)精度:0.9638,召回率:0.9600F10.9599

 

posted @ 2024-11-23 14:48  灬倾夏  阅读(23)  评论(0)    收藏  举报