20231114学习总结

发布时间 2023-11-14 08:44:12作者: cassebl
推荐参考书:[1] 范淼, 李超. Python 机器学习及实践, 清华大学出版社. 
[2] Peter Harrington. 机器学习实战, 人民邮电出版社。
《机器学习 B 实验任务书 1》
一、上机安排
时间 地点
第 10 周周一 2023.11.066-7 节 九实 4-34-411 周周一 2023.11.136-7 节 九实 4-34-412 周周一 2023.11.206-7 节 九实 4-34-413 周周一 2023.11.276-7 节 九实 3-632750414 周周一 2023.12.046-7 节 九实 3-632750415 周周一 2023.12.116-7 节 九实 3-632750416 周周一 2023.12.186-7 节 九实 3-632750417 周周一 2023.12.256-7 节 九实 3-6327504 
二、上机实验:数据准备与模型评估 数据准备与模型评估 数据准备与模型评估 
1、实验目的
熟悉 Python 的基本操作,掌握对数据集的读写实现、对模型性能的评估实现的能力;
加深对训练集、测试集、N 折交叉验证、模型评估标准的理解。
2、实验内容
(1)利用 pandas 库从本地读取 iris 数据集;
(2)从 scikit-learn 库中直接加载 iris 数据集;
(3)实现五折交叉验证进行模型训练;
(4)计算并输出模型的准确度、精度、召回率和 F1 值。
3、操作要点
(1)安装 Python 及 pycharm(一种 Python 开发 IDE),并熟悉 Python 基本操作;
(2)学习 pandas 库里存取文件的相关函数,以及 scikit-learn 库里数据集下载、交叉验
证、模型评估等相关操作;
(3)可能用的库有 pandas,scikit-learn,numpy 等,需要提前下载 pip;
(4)测试模型可使用随机森林 rf_classifier = RandomForestClassifier(n_estimators=100),
或其它分类器;
(5)撰写实验报告,提交源代码;实验报告在所有上机实验结束后提交。
4、主要仪器设备
微机及 Python 软件。
Tips:(1)Python 对代码格式十分敏感,务必注意缩进、空格等不规范操作;
 (2)用到的库需要提前加载,例如
import pandas as pd 
import numpy as np 
from sklearn.datasets import load_iris 
from sklearn.model_selection import cross_val_score, KFold, cross_val_predict 
…… 
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score, cross_val_predict
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.model_selection import StratifiedKFold

# 加载 iris 数据集

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

# 创建随机森林分类器

rf_classifier = RandomForestClassifier(n_estimators=100)

# 创建五折交叉验证对象

cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)

# 进行交叉验证

accuracy_scores = cross_val_score(rf_classifier, X, y, cv=cv, scoring='accuracy')
precision_scores = cross_val_score(rf_classifier, X, y, cv=cv, scoring='precision_macro')
recall_scores = cross_val_score(rf_classifier, X, y, cv=cv, scoring='recall_macro')
f1_scores = cross_val_score(rf_classifier, X, y, cv=cv, scoring='f1_macro')

# 输出结果

print("Accuracy(准确度):", accuracy_scores.mean())
print("Precision(精确度):", precision_scores.mean())
print("Recall(召回率):", recall_scores.mean())
print("F1 Score(F1值):", f1_scores.mean())

#  23/11/14

#  08:29