首页 > 其他分享 >机器学习 实验六

机器学习 实验六

时间:2024-12-31 12:18:52浏览次数:1  
标签:机器 score macro 学习 print train 实验 test cv

# 导入必要的库
from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_validate
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
import numpy as np

# (1)加载数据集并划分数据集为训练集和测试集
iris = datasets.load_iris() # 加载 iris 数据集
X = iris.data # 特征值
y = iris.target # 目标值

# 使用train_test_split函数进行数据集分割,留出1/3的样本作为测试集
# stratify=y 参数确保训练集和测试集中各类别的比例相同(同分布取样)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3.0, random_state=42, stratify=y)

# (2)初始化朴素贝叶斯分类器并训练
gnb = GaussianNB() # 创建高斯朴素贝叶斯分类器实例
gnb.fit(X_train, y_train) # 使用训练集训练分类器

# (3)使用五折交叉验证评估模型性能
# scoring参数指定要计算的评分指标
cv_results = cross_validate(gnb, X_train, y_train, cv=5, scoring=['accuracy', 'precision_macro', 'recall_macro', 'f1_macro'])

# 输出交叉验证结果的平均值
print(f"交叉验证准确度均值: {np.mean(cv_results['test_accuracy'])}")
print(f"交叉验证精度均值: {np.mean(cv_results['test_precision_macro'])}")
print(f"交叉验证召回率均值: {np.mean(cv_results['test_recall_macro'])}")
print(f"交叉验证F1值均值: {np.mean(cv_results['test_f1_macro'])}")

# (4)使用测试集评估模型性能
y_pred = gnb.predict(X_test) # 使用测试集预测
# 计算并打印测试集上的各项性能指标
print(f"测试集准确度: {accuracy_score(y_test, y_pred)}")
print(f"测试集精度: {precision_score(y_test, y_pred, average='macro')}")
print(f"测试集召回率: {recall_score(y_test, y_pred, average='macro')}")
print(f"测试集F1值: {f1_score(y_test, y_pred, average='macro')}")

# 提交作业时需要打包源代码,命名为:学号姓名-任务6.zip

 

标签:机器,score,macro,学习,print,train,实验,test,cv
From: https://www.cnblogs.com/youxiandechilun/p/18643702

相关文章

  • 机器学习 实验八
    #导入必要的库fromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_split,cross_validatefromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_scoreimportnu......
  • 飞书lark机器人 自动化发版
    飞书lark机器人自动化发版#1介绍开发飞书机器人接收消息并调用构建接口,实现自动化发版发送指令->机器人接收指令->调用jenkins-job远程构建与部署jenkins配置,勾选job配置的触发远程构建并设置身份验证令牌#测试触发远程构建curl-ks-uuser:user_token-......
  • 学习 lambda
    JavaLambda表达式|菜鸟教程(runoob.com)根据菜鸟教程学习Lambda表达式概述定义:Lambda表达式是Java8引入的一个特性,它允许开发者以更加简洁和紧凑的方式编写匿名类的替代品。它们通常用于实现函数式接口(即只有一个抽象方法的接口)。语法:(parameters)->expressio......
  • 学习 stream 流
    Java8引入了StreamAPI,这是一个处理集合数据的强大工具,它允许你以声明式的方式对数据进行各种操作,如过滤、映射、排序、归约等。Stream不存储数据,而是像管道一样传输和转换数据元素。你可以将Stream看作是高级迭代器,它提供了一种更抽象的方式来遍历和操作数据集。Stream的......
  • GO 学习笔记之零 (四)字符串处理集锦
    1、遍历字符串中的每个字符 2、去掉字符串前后空格strings.TrimSpace(str)3、字符串长度len(str)4、缓存方式拼接字符串var_bufferbytes.Buffer//定义缓存字符串变量_buffer.WriteString(str1)//拼接字符串_buffer.WriteString(str2[0:1])//拼接字符_buffer......
  • 计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了
    前言许多学子选择踏上计算机这条充满挑战与机遇的道路。但在大学四年中,如何规划自己的学习路线,才能在毕业时脱颖而出,成为行业的佼佼者呢?第一学年:基础知识的奠基1.1课程安排在大学的第一年,重点是打好基础,掌握计算机科学的核心概念。通常你会接触到以下课程:计算机科学导......
  • 宠物照料模块项目实验报告
    宠物照料模块项目总结一、组员分工夏鑫哲:硬件各模块驱动控制代码编写硬件各模块电路配置项目大框架指定消息发送协议格式制定姚雨森:硬件主控制函数编写硬件各模块C++对象调用和函数使用设备连接华为云服务器控制和消息发送周涵昕:基于JavaScript的React安卓和网......
  • 防火墙相关 学习记录
     防火墙是由一些软、硬件组合而成的网络访问控制器,它根据一定的安全规则来控制流过防火墙的网络包,如禁止或转发,能够屏蔽被保护网络内部的信息、拓扑结构和运行状况,从而起到网络安全屏障的作用。一般用来将内部网络与因特网或者其他外部网络互相隔离,限制网络互访,保护内部网络的安......
  • Java学习笔记01-static关键字
    static静态,可以修饰成员变量、成员方法##一、static修饰成员变量1、静态变量(类变量):有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享2、实例变量(对象的变量):无static修饰,属于每个对象,每个对象的实例变量各不相同packageorg.example.staticfield;publicclass......
  • Java学习笔记02-电影信息展示综合案例
    需求:展示电影的全部信息,包括id、名称、价格、主演。要求展示出全部信息,并且用户可以根据电影id号查询某个电影的详细息实施步骤:1、设计电影类Movie,以便创建电影对象,封装电影数据packageorg.example.Demo;//实体类publicclassMovie{privateintid;private......