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

news/2024/12/2 12:59:10/文章来源:https://www.cnblogs.com/yindantong/p/18581669

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

一、实验目的

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

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

 

二、实验内容

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

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

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

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

 

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

   1. 算法伪代码

 

   数据集 = load_iris_dataset()

   数据集_df = 转换为DataFrame(数据集)

 

   标签_映射 = 创建标签映射表('Iris-setosa' -> 0, 'Iris-versicolor' -> 1, 'Iris-virginica' -> 2

   数据集_df['Species'] = 应用标签映射到数据集_df['Species']

   特征 = 提取特征列(数据集_df)

   标签 = 提取标签列(数据集_df['Species'])

 

   pca = 初始化PCA(n_components=2)

   降维数据 = pca.fit_transform(特征)

   (可选)可视化降维数据

   X_train, X_test, y_train, y_test = 划分数据集(特征, 标签, test_size=0.3, stratify=标签, random_state=2024)

   决策树 = 初始化DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=5, class_weight='balanced', random_state=2024)

   决策树.fit(X_train, y_train)

模型预测

    y_pred = 决策树.predict(X_test)

评估模型

   准确率 = 计算准确率(y_test, y_pred)

   精度 = 计算精度(y_test, y_pred, average='macro')

   召回率 = 计算召回率(y_test, y_pred, average='macro')

   F1分数 = 计算F1分数(y_test, y_pred, average='macro')

   输出准确率、精度、召回率和F1分数

 

   2. 算法主要代码

1)完整源代码

'''

Created on 20241118

 

@author: 席酒

'''

import pandas as pd

from sklearn.decomposition import PCA

import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split

from sklearn.tree import DecisionTreeClassifier

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

from sklearn.datasets import load_iris

 

# 加载iris数据集

iris = load_iris()

df = pd.DataFrame(data=iris.data, columns=iris.feature_names)

df['Species'] = iris.target

 

# 标签编码

label_index = {0: 'Iris-setosa', 1: 'Iris-versicolor', 2: 'Iris-virginica'}

df['Species_name'] = df['Species'].apply(lambda x: label_index[x])

label_map = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}

df['Species'] = df['Species_name'].apply(lambda x: label_map[x])

 

# 数据基本信息

print('数据量:', len(df))

print(df.head())

print('空值数量统计:')

print(df.isnull().sum())

print(df.describe())

 

# 删除不需要的列

df = df.drop(['Species_name'], axis=1)

 

# 特征和标签

X = df[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']].values

y = df['Species'].values

 

# PCA 降维

pca = PCA(n_components=2)

pca_data = pca.fit_transform(X)

 

# 可视化 PCA 结果

plt.scatter(pca_data[:, 0], pca_data[:, 1], c=y)

plt.title('PCA of Iris Dataset')

plt.xlabel('Principal Component 1')

plt.ylabel('Principal Component 2')

plt.colorbar(ticks=[0, 1, 2], label='Species')

plt.show()

 

# 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, stratify=y, random_state=2024)

print('训练集数据量:', len(X_train))

print('测试集数据量:', len(X_test))

 

# 决策树模型训练

dt = DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=5, class_weight='balanced', random_state=2024)

dt.fit(X_train, y_train)

 

# 预测

y_pred = dt.predict(X_test)

 

# 评估模型

accuracy = accuracy_score(y_test, y_pred)

print('Accuracy:', accuracy)

print('Precision:', precision_score(y_test, y_pred, average='macro'))

print('Recall:', recall_score(y_test, y_pred, average='macro'))

print('F1:', f1_score(y_test, y_pred, average='macro'))

 

2)调用库方法

 

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

数据量: 150

sepal length (cm) sepal width (cm) ... Species Species_name

0 5.1 3.5 ... 0 Iris-setosa

1 4.9 3.0 ... 0 Iris-setosa

2 4.7 3.2 ... 0 Iris-setosa

3 4.6 3.1 ... 0 Iris-setosa

4 5.0 3.6 ... 0 Iris-setosa

 

[5 rows x 6 columns]

空值数量统计:

sepal length (cm) 0

sepal width (cm) 0

petal length (cm) 0

petal width (cm) 0

Species 0

Species_name 0

dtype: int64

sepal length (cm) sepal width (cm) ... petal width (cm) Species

count 150.000000 150.000000 ... 150.000000 150.000000

mean 5.843333 3.057333 ... 1.199333 1.000000

std 0.828066 0.435866 ... 0.762238 0.819232

min 4.300000 2.000000 ... 0.100000 0.000000

25% 5.100000 2.800000 ... 0.300000 0.000000

50% 5.800000 3.000000 ... 1.300000 1.000000

75% 6.400000 3.300000 ... 1.800000 2.000000

max 7.900000 4.400000 ... 2.500000 2.000000

 

[8 rows x 5 columns]

训练集数据量: 105

测试集数据量: 45

Accuracy: 0.9111111111111111

Precision: 0.9111111111111111

Recall: 0.9111111111111111

F1: 0.9111111111111111

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845394.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.25实验 23:策略模式

[实验任务一]:旅行方式的选择 旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。 实验要求: 1. 画出对应的类图;2. 提交源代码; package strategy;public class Person {private Tour…

vxe-table 设置斑马线条纹样式

vxe-table 设置斑马线条纹样式,通过设置 stripe 参数 官网:https://vxetable.cn 表格<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div> </template><script> export default {data () {const gridOpti…

Lsky Pro挂载alist

首先需要去修改lsky代码,如果是docker可以 docker exec -it lsky-pro /bin/bash 然后安装个vim apt install vim cd app cd Services/ ls vi ImageService.php 然后vim输入 :set nu 显示行号,然后找到345行,粘贴进去 authType => 1, lwebdav存储策略问题 Issue #497 ls…

使用Go语言开发的一款轻量级可视化服务器监控监控软件

大家好,我是兔兔,兔兔答题的开发者。兔兔答题是一款简单、易用的答题系统,可应用于微信考试、付费考试、社会调查问卷、明星知识问答、员工培训考核、模拟自测、企业面试、试题库等多种场景。兔兔答题官网文档 进入给大家分享的内容是一款轻量级的日志可视化图形工具。在兔兔…

中电金信:源启数据资产平台的智能化与安全化的创新之道

中国企业在数智化转型中在数据治理领域遭遇多重挑战,包括在数据标准化、数据质量提升、数据分级分类,以及数据安全治理等。近几年,中电金信依托自主研发的智能数据底座“源启数据资产平台”,助力企业实现数据驱动的业务经营和精益管理。该平台不断吸纳全球数据治理领域的前…

【WEB漏洞】并发漏洞+经典案例

一、简单介绍1.1 并发漏洞概述1.2 并发漏洞常出现的功能点及解决方法1.2.1 用户注册/账户管理1.2.2 秒杀/抢购功能1.2.3 支付与结算1.2.4 文件读写1.2.5 日志记录1.2.6 缓存更新1.2.7 任务调度1.2.8 数据库操作1.2.9 队列消费1.2.10 多线程计算1.2.11 微服务间的并发请求1.2.12…

AI之旅:Microsoft.Extensions.AI 送惊喜,Cnblogs.DashScope.AI 表支持

https://www.cnblogs.com/cmt/p/185775742024年10月8日,微软 .NET 官方博客发布了一篇博文 Introducing Microsoft.Extensions.AI Preview – Unified AI Building Blocks for .NET,给 .NET 开发者带来了一个小惊喜,.NET 类库将增加一个统一的调用 AI 服务的抽象接口层。Mic…

word 图标变为文本图标 修复不起作用

参考 https://blog.csdn.net/qq_42925869/article/details/141466944,在HKEY_CURRENT_USER\Software\Classes\Applications目录下发现没有WORD的程序,因此参考其他程序结构,手动新建。 新建完成后再次应用office tool plus修复,修复完成后图标恢复。

CH585_IAP升级步骤

1、打开名为:McuProgramIAPTool.exe的工具,工具界面如图: 注:仅下载界面有效2、给接收器升级时,不需要保证2.4G处于连接状态,只要接收器插在PC上即可完成升级 3、选择接口:mi_034、点击搜索按钮,如果插入了2.4G接收器,会枚举到对应设备,返回已连接信息5、选择要升级的…

YASKAWA安川DX100控制柜维修看这几步

维修YASKAWA安川DX100控制柜需要综合运用多种诊断技巧,并遵循严格的安全操作规程。通过预防性维护和及时的故障处理,可以显著提高DX100控制柜的可靠性和使用寿命,从而保障企业生产线的稳定运行。同时,建议联系子锐机器人维修定期对YASKAWA安川机器人维修和保养。一、YASKAW…

待办事项太多?这些App让你轻松搞定!

在日常工作和生活中,许多人都有过忘记重要事项或任务堆积的困扰。为了提高工作效率和生活质量,越来越多的人开始寻求一种高效的方式来管理自己的任务和待办事项。幸运的是,随着技术的进步,各类待办事项App应运而生,它们不仅能够帮助我们合理安排时间,还能通过各种智能化功…