首页 > 其他分享 >11.15

11.15

时间:2024-11-15 13:56:38浏览次数:1  
标签:F1 score 11.15 准确率 train 测试 test

实验二:逻辑回归算法实现与测试

 

一、实验目的

深入理解对数几率回归(即逻辑回归的)的算法原理,能够使用 Python 语言实现对数

几率回归的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。

 

二、实验内容

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

意同分布取样);

(2)使用训练集训练对数几率回归(逻辑回归)分类算法;

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

择;

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

部分

 

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

   1. 算法伪代码

导入必要的库。

加载iris数据集并分为特征集X和目标集y。

将数据集分为训练集和测试集(测试集占1/3)。

创建逻辑回归模型。

使用训练集训练模型。

进行五折交叉验证并计算平均准确率。

使用模型预测测试集。

计算并打印准确率、精确率、召回率和F1分数。

打印分类报告。

 

   2. 算法主要代码

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

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score, KFold
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, classification_report

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

# 使用train_test_split函数划分数据集,test_size=1/3表示测试集占1/3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)

# 创建逻辑回归分类器实例
logreg = LogisticRegression(max_iter=200)

# 使用训练集数据训练模型
logreg.fit(X_train, y_train)

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

# 使用cross_val_score计算五折交叉验证的准确率
accuracies = cross_val_score(logreg, X_train, y_train, cv=kf, scoring='accuracy')
print(f'五折交叉验证的平均准确率: {np.mean(accuracies)}')

# 如果需要计算其他指标,可以手动分割数据集并计算

# 预测测试集
y_pred = logreg.predict(X_test)

# 计算各种性能指标
acc = accuracy_score(y_test, y_pred)
prec = precision_score(y_test, y_pred, average='weighted')
rec = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')

print(f'Accuracy: {acc}')
print(f'Precision: {prec}')
print(f'Recall: {rec}')
print(f'F1 Score: {f1}')

# 打印详细的分类报告
print(classification_report(y_test, y_pred, target_names=iris.target_names))

 

 

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

 

 

四、实验结果分析

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

 

 

  1. 对比分析

准确率对比:

训练集上的五折交叉验证平均准确率为 0.95。

测试集上的准确率为 0.94。

分析:训练集和测试集的准确率非常接近,这表明模型在训练集和测试集上的表现较为一致,没有明显的过拟合现象。

精确率对比:

测试集上的加权平均精确率为 0.9409722222222223。

分析:精确率较高,说明模型在预测正类时的正确率较高。

召回率对比:

测试集上的加权平均召回率为 0.94。

分析:召回率较高,说明模型在预测所有正类时的覆盖率较高。

F1 值对比:

测试集上的加权平均 F1 值为 0.939948051948052。

分析:F1 值是精确率和召回率的调和平均值,综合考虑了两者的平衡,较高的 F1 值表明模型在这两个方面都有较好的表现。

标签:F1,score,11.15,准确率,train,测试,test
From: https://www.cnblogs.com/0608lin/p/18547861

相关文章

  • CW 11.15 模拟赛记录
    看到说不按题目难度排序,先读下题初看\(\rm{T1}\)没什么思路\(\rm{T2}\)感觉像是\(\rm{dp}\),可能能多骗点?\(\rm{T3}\)又是计数\(\rm{T4}\)没思路感觉要寄,\(\rm{lhs}\)多半又要\(\rm{AK}\)\(\rm{T2}\)观察到这个类型的题比较熟,先开\(\rm{T2}\)简化题意......
  • 2024.11.15 springsecurity执行力逻辑
    @Configuration@RequiredArgsConstructorpublicclassSecurityConfiguration{privatefinalSecurityHandlersecurityHandler;privatefinalJwtAuthorizeFilterjwtAuthorizeFilter;@BeanpublicPasswordEncoderpasswordEncoder(){re......
  • 11.15
      实验16:命令模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解命令模式的动机,掌握该模式的结构;2、能够利用命令模式解决实际问题。 [实验任务一]:多次撤销和重复的命令模式某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列......
  • laravel:访问es,索引和搜索(Laravel 11.15.0)
    一,安装需要的库1,包的地址:https://packagist.org/packages/elasticsearch/elasticsearch2,文档地址:https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html3,用composer从命令行安装[lhdop@blogdignews]$composerrequireelasticsearch/ela......
  • 11.15
    距离NOIP还有两天,可能高二压力比较大吧......
  • 11.15
    语法说明如下:1)过程名存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即db_name.sp_name。需要注意的是,名称应当尽量避免选取与MySQL内置函数相同的名称,否则会发生错误。2)过程参数存储过程的参数列表。其中,<参数名......
  • 11.15
    今日学习内容<%--CreatedbyIntelliJIDEA.TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>修改</title......
  • 11.15链表逆置
     structListNode*reverse(structListNode*head){structListNode*L=(structListNode*)malloc(sizeof(structListNode)),*p,*q;L->next=NULL;p=head;//中间量while(p){q=(structListNode*)malloc(sizeof(structListNode));......
  • 11.15 监控目录文件变化
    监视对指定目录的更改,并将有关更改的信息打印到控制台,该功能的实现不仅可以在内核层,在应用层同样可以。程序中使用ReadDirectoryChangesW函数来监视目录中的更改,并使用FILE_NOTIFY_INFORMATION结构来获取有关更改的信息。ReadDirectoryChangesW是Windows操作系统提供的一个函数,......
  • 11.15每日总结2
    子组件使用this.$emit()向父组件传值首先必须在父组件中引用子组件,然后实现传值第一步在父组件中引入子组件使用import引入组件importindexImportOrderfrom'./components/indexImportOrder'声明//定义组件components:{indexImportOrder,},使用<indexI......