首页 > 其他分享 >12.26日报

12.26日报

时间:2025-01-14 20:22:06浏览次数:1  
标签:score 训练 日报 pred 12.26 train 测试 test

完成机器学习实验五,以下为实验内容:

实验五:BP 神经网络算法实现与测试

一、实验目的

深入理解支持向量机(SVM)的算法原理,能够使用 Python 语言实现支持向量机的训 练与测试,并且使用五折交叉验证算法进行模型训练与评估。

 

 

二、实验内容

(1)从 scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注 意同分布取样);

(2)使用训练集训练支持向量机—SMO 分类算法;

(3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选 择;

(4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验四的 部分。

 

 

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

   1. 算法伪代码

1. 导入必要的库

   - 导入加载数据集的函数

   - 导入数据划分的函数

   - 导入多层感知器分类器

   - 导入性能评估函数

 

2. 加载iris数据集

   - 调用函数加载iris数据集,获取特征集X和标签集y

 

3. 数据划分

   - 使用train_test_split函数将数据集X和y划分为训练集和测试集

   - 测试集大小设置为1/3,随机种子设置为42

 

4. 初始化MLPClassifier

   - 创建MLPClassifier实例mlp

   - 设置隐藏层大小为100,最大迭代次数为1000,L2正则化系数为0.0001

   - 设置优化器为sgd,随机种子为1,初始学习率为0.1

 

5. 训练模型

   - 使用训练集X_train和y_train训练mlp模型

 

6. 交叉验证评估模型性能

   - 使用cross_val_score函数对训练集进行5折交叉验证,并计算准确率

   - 打印交叉验证分数和平均准确率

 

7. 测试模型

   - 使用训练好的模型mlp对测试集X_test进行预测,得到预测结果y_pred

 

8. 计算测试集上的性能指标

   - 使用accuracy_score函数计算测试集的准确率

   - 使用precision_score函数计算测试集的精度(查准率),设置平均方法为'macro'

   - 使用recall_score函数计算测试集的召回率(查全率),设置平均方法为'macro'

   - 使用f1_score函数计算测试集的F1值,设置平均方法为'macro'

 

9. 计算训练集上的性能指标

   - 使用训练好的模型mlp对训练集X_train进行预测,得到预测结果y_train_pred

   - 使用accuracy_score函数计算训练集的准确率

   - 使用precision_score函数计算训练集的精度(查准率),设置平均方法为'macro'

   - 使用recall_score函数计算训练集的召回率(查全率),设置平均方法为'macro'

   - 使用f1_score函数计算训练集的F1值,设置平均方法为'macro'

 

10. 打印训练结果和测试结果

    - 打印训练集的准确率、精度、召回率和F1值

    - 打印测试集的准确率、精度、召回率和F1值

 

   2. 算法主要代码

完整源代码\调用库方法(函数参数说明)

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

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

# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42)

# 训练BP神经网络
mlp = MLPClassifier(hidden_layer_sizes=(100,), max_iter=1000, alpha=1e-4,
                    solver='sgd', verbose=10, random_state=1,
                    learning_rate_init=.1)

# 训练模型
mlp.fit(X_train, y_train)

# 交叉验证评估模型性能
scores = cross_val_score(mlp, X_train, y_train, cv=5, scoring='accuracy')
print(f'Cross-validation scores (5-fold): {scores}')
print(f'Average cross-validation accuracy: {scores.mean():.4f}')

# 测试模型
y_pred = mlp.predict(X_test)

# 计算测试集上的性能指标
accuracy_test = accuracy_score(y_test, y_pred)
precision_test = precision_score(y_test, y_pred, average='macro')
recall_test = recall_score(y_test, y_pred, average='macro')
f1_test = f1_score(y_test, y_pred, average='macro')

# 计算训练集上的性能指标
y_train_pred = mlp.predict(X_train)
accuracy_train = accuracy_score(y_train, y_train_pred)
precision_train = precision_score(y_train, y_train_pred, average='macro')
recall_train = recall_score(y_train, y_train_pred, average='macro')
f1_train = f1_score(y_train, y_train_pred, average='macro')

# 打印训练结果和测试结果
print('\nTraining Results:')
print(f'Training Accuracy (准确率): {accuracy_train:.4f}')
print(f'Training Precision (查准率): {precision_train:.4f}')
print(f'Training Recall (查全率): {recall_train:.4f}')
print(f'Training F1 Score: {f1_train:.4f}')

print('\nTest Results:')
print(f'Test Accuracy (准确率): {accuracy_test:.4f}')
print(f'Test Precision (查准率): {precision_test:.4f}')
print(f'Test Recall (查全率): {recall_test:.4f}')
print(f'Test F1 Score: {f1_test:.4f}')

 

1. load_iris()

说明:加载鸢尾花(iris)数据集。

参数:无。

返回值:返回一个包含鸢尾花数据集的特征集(X)和标签集(y)的对象。

2. train_test_split(X, y, test_size=1/3, random_state=42)

说明:将数据集X和y划分为训练集和测试集。

参数:

X:特征集。

y:标签集。

test_size:测试集的比例,默认为0.25(即25%)。

random_state:随机数生成器的种子,默认为None。设置相同的种子可以确保每次划分的结果相同。

返回值:返回训练集的特征集(X_train)、测试集的特征集(X_test)、训练集的标签集(y_train)和测试集的标签集(y_test)。

3. MLPClassifier(hidden_layer_sizes=(100,), max_iter=1000, alpha=1e-4, solver='sgd', verbose=10, random_state=1, learning_rate_init=.1)

说明:创建多层感知器(MLP)分类器实例。

参数:

hidden_layer_sizes:隐藏层的大小,以元组的形式给出,默认为(100,)。

max_iter:最大迭代次数,默认为200。

alpha:L2正则化项的系数,默认为0.0001。

solver:优化算法,默认为‘adam’。其他选项包括‘sgd’、‘lbfgs’等。

verbose:控制日志显示的详细程度,默认为0。大于0时,会在控制台输出训练进度。

random_state:随机数生成器的种子,默认为None。设置相同的种子可以确保结果的可重复性。

learning_rate_init:初始学习率,默认为0.001。

返回值:返回一个MLPClassifier实例。

4. fit(X_train, y_train)

说明:训练模型。

参数:

X_train:训练集的特征集。

y_train:训练集的标签集。

返回值:返回训练好的模型。

5. cross_val_score(estimator, X_train, y_train, cv=5, scoring='accuracy')

说明:进行交叉验证,并计算指定的评分指标。

参数:

estimator:评估的模型。

X_train:训练集的特征集。

y_train:训练集的标签集。

cv:交叉验证的折数,默认为5。

scoring:评分指标,默认为‘accuracy’。其他选项包括‘precision’、‘recall’、‘f1’等。

返回值:返回一个数组,包含每次交叉验证的评分。

6. predict(X_test)

说明:对测试集进行预测。

参数:

X_test:测试集的特征集。

返回值:返回预测的标签集。

7. accuracy_score(y_true, y_pred)

说明:计算准确率。

参数:

y_true:真实的标签集。

y_pred:预测的标签集。

返回值:返回准确率的值。

8. precision_score(y_true, y_pred, average='macro')

说明:计算精度(查准率)。

参数:

y_true:真实的标签集。

y_pred:预测的标签集。

average:计算平均值的方法,默认为‘macro’。其他选项包括‘micro’、‘weighted’等。

返回值:返回精度的值。

9. recall_score(y_true, y_pred, average='macro')

说明:计算召回率(查全率)。

参数:

y_true:真实的标签集。

y_pred:预测的标签集。

average:计算平均值的方法,默认为‘macro’。其他选项包括‘micro’、‘weighted’等。

返回值:返回召回率的值。

10. f1_score(y_true, y_pred, average='macro')

说明:计算F1值。

参数:

y_true:真实的标签集。

y_pred:预测的标签集。

average:计算平均值的方法,默认为‘macro’。其他选项包括‘micro’、‘weighted’等。

返回值:返回F1值的值。

 

 

 

   3. 训练结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1)

 

 

四、实验结果分析

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

 

 

2. 对比分析

准确率(Accuracy):

 

训练准确率:0.9000(90%)

测试准确率:0.9200(92%)

分析:测试准确率略高于训练准确率,表明模型在测试集上的表现略好于训练集。这是一个好的迹象,说明模型具有一定的泛化能力,没有明显的过拟合现象。

精度(Precision):

 

训练精度:0.9242(92.42%)

测试精度:0.9333(93.33%)

分析:测试精度略高于训练精度,这进一步表明模型在测试集上的表现较好,能够更准确地识别类别。

召回率(Recall):

 

训练召回率:0.9048(90.48%)

测试召回率:0.9111(91.11%)

分析:测试召回率略高于训练召回率,说明模型在测试集上能够较好地识别出更多的正类样本。

F1值(F1 Score):

 

训练F1值:0.9017

测试F1值:0.9117

分析:测试F1值略高于训练F1值,这表明模型在测试集上综合了精度和召回率的表现更好,是一个积极的信号。

交叉验证性能:

交叉验证准确率:[1.0, 0.95, 0.85, 1.0, 1.0]

平均交叉验证准确率:0.9600(96%)

标签:score,训练,日报,pred,12.26,train,测试,test
From: https://www.cnblogs.com/lijianlongCode13/p/18671509

相关文章

  • 12.27日报
    完成大型数据库实验三熟悉常用的HBASE操作,以下为实验内容:实验3熟悉常用的HBase操作  1.实验目的        (1)理解HBase在Hadoop体系结构中的角色;        (2)熟练使用HBase操作常用的Shell命令;        (3)熟悉HBase操作常用的JavaAPI。2.实验平台......
  • 12.31日报
    完成大型数据库实验五,以下为实验内容:实验5MapReduce初级编程实践 1.实验目的(1)通过实验掌握基本的MapReduce编程方法;(2)掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04)(2)Hadoop版本:3......
  • 12.18日报
    完成机器学习实验,并完成大型数据库实验,以下为实验内容:实验一:数据准备与模型评估一、实验目的熟悉Python的基本操作,掌握对数据集的读写实现、对模型性能的评估实现的能力;加深对训练集、测试集、N折交叉验证、模型评估标准的理解。 二、实验内容(1)利用pandas库从本地读......
  • 12.19日报
    继续完成机器学习实验二,以下为部分实验内容:实验二:逻辑回归算法实现与测试一、实验目的深入理解对数几率回归(即逻辑回归的)的算法原理,能够使用Python语言实现对数几率回归的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。  二、实验内容1)从scikit-learn库中......
  • 12.20日报
    完成大型数据库实验一熟悉常用的linux操作和hadoop操作,以下为今日实验内容:1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ub......
  • 华尔街日报无需登录查看不可查看内容
    使用第三方接口来为当前页面提供服务的脚本,简单编写,使用应用程序接口调用保存页面实现永久存储及达到阅读某街日报内容(接口无需加速)对于那些可能很快变化的网页,这个脚本会非常有用。本站保存的网页不包含脚本和动态对象,所以是安全的,不会有弹窗或其他恶意程序。油猴脚本地址:华尔......
  • 2024.12.26(MyBatis知识点)
    <!--mybatis坐标--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.4</version></dependency><!--mysql驱动坐标--><......
  • 软工寒假日报(一)
    今天开始简单了解了python爬虫,并安装了相关依赖importrequestsfrombs4importBeautifulSoupimportpandasaspd#爬取一个页面的数据defscrape_page(url):headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,li......
  • 英伟达世界基础模型 Cosmos,教 AI 理解物理世界;阿里通义与雷鸟合作推出 AI 眼镜丨 RTE
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的......
  • 罗永浩 AI 智能助理 J1 Assistant 上线;字节开源 LatentSync ,精准控制唇形同步丨 RTE
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......