第L3周:机器学习-逻辑回归

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

目标

  1. 逻辑回归适用于分类问题,主要用于解决二分类或多分类的问题。比如:用户购买某商品的可能性,某病人患有某种疾病的可能性等等;某个物品属于哪个类别等;
  2. 了解Sigmoid和Softmax的用法

具体实现
(一)环境
语言环境:Python 3.10
编 译 器: PyCharm
*框 架:*scikit-learn
**(二)具体步骤:
导入库

import numpy as np  
import pandas as pd  
from sklearn import datasets  
from sklearn.model_selection import train_test_split  
from sklearn.preprocessing import StandardScaler  
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
  1. 导入数据集:
# 导入数据集  
iris = datasets.load_iris()  
X = iris.data  
Y = iris.target  
print("X(iris.data):", X, X.shape)  
print("Y(iris.target):", Y, Y.shape)

image.png

2. 数据预处理:特征标准化:

# 数据预处理:特征标准化  
scaler = StandardScaler()  # 将数据缩放到一个均值为 0,标准差为 1 的正态分布  
X_scaled = scaler.fit_transform(X)
print("X_scaled:", X_scaled, X_scaled.shape)

image.png
image.png
3. ** 划分训练集和测试集**:

X_train, X_test, Y_train, Y_test = train_test_split(X_scaled,  Y,  test_size=0.2,  random_state=42)

注:random_state参数设置成了42,会有什么效果?参考:train_test_split详解_train test split-CSDN博客
random_state:有三种结果,0或None:每次随机的数据集都不一样。整数(int):每次随机的数据集是一样的(固定的),一样的数据集就可以复现模型结果。如:把random_state设置成None,多执行几次代码,会发现准确率是不一样的。
4. 逻辑回归模型:

# 逻辑回归模型  
from sklearn.linear_model import LogisticRegression  
model = LogisticRegression(max_iter=200) # 默认迭代100次,这里设置成200次  
model.fit(X_train, Y_train)
  1. 预测结果:
# 预测结果  
y_pred = model.predict(X_test)  
print("predictions:", y_pred)

image.png
6. 评估预测结果:

# 评估预测结果  
accuracy = accuracy_score(Y_test, y_pred)  
print("模型准确率:", accuracy)

image.png

# 精确一点,准确率保留两位小数点,格式化输出一下  
print("模型准确率:%.2f" % accuracy)

image.png

# 打印分类报告  
print("打印分类报告:")  
print(classification_report(Y_test, y_pred, target_names=iris.target_names))

image.png
注:
1.precision:准确率,表示模型在预测为正例的样本中,实际为正例的比例
2.recall:召回率,表示模型在实际为正例的样本中,成功预测为正例的比例
3.f1-score:F1分数,综合精确度和召回率的指标,是精确度和召回率的调和均值
4.support:支持度,表示每个类别在实际数据中的样本数量

# 打印混淆矩阵  
print("混淆矩阵:")  
print(confusion_matrix(Y_test, y_pred))

image.png
在机器学习和数据科学领域,混淆矩阵(Confusion Matrix)是一种常用的性能度量工具,尤其在分类问题中。它提供了分类模型性能的可视化表示,帮助我们深入理解模型的分类效果。混淆矩阵以矩阵的形式展示了真实类别与模型预测类别之间的关系。混淆矩阵的每一行代表实际类别,每一列代表预测类别。通过混淆矩阵,我们可以清晰地看到每个类别的真正例(True Positive, TP)、假正例(False Positive, FP)、真反例(True Negative, TN)和假反例(False Negative, FN)的数量。参考:zhuanlan.zhihu.com/p/471327487,假设预测的结果(类别)是4,做个示意图分解一下:
image.png
image.png
image.png
image.png

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java项目: 基于SpringBoot+mysql房产销售系统 (含源码+数据库+开题报告+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql房产销售系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐…

MySQL笔记(大斌)

乐观锁和悲观锁是什么? 数据库中的并发控制是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观锁和悲观锁是并发控制主要采用的技术手段。 悲观锁:假定会发生并发冲突,会对操作的数据进行加锁&a…

LLM指令微调实践与分析

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

Http的get请求中的URL中的占位符参数和查询参数有什么区别

Http的GET请求中的URL中的占位符参数和查询参数在功能、位置和用途上存在明显的区别。 占位符参数(Path Variables) 定义与位置:占位符参数是通过URL模板中的{}定义的,它们位于URL的路径(path)部分。例如…

计算机网络 第2章 物理层

文章目录 通信基础基本概念信道的极限容量编码与调制常用的编码方法常用的调制方法 传输介质双绞线同轴电缆光纤以太网对有限传输介质的命名规则无线传输介质物理层接口的特性 物理层设备中继器集线器一些特性 物理层任务:实现相邻节点之间比特(0或1&…

【王树森】RNN模型与NLP应用(7/9):机器翻译与Seq2Seq模型(个人向笔记)

Machine Translation Data 做机器学习任务的第一步都是处理数据,我们首先需要准备机器翻译的数据。由于我们是学习用途,因此拿一个小规模数据集即可:http://www.manythings.org/anki/下面的数据集中:一个英语句子对应多个德语句子…

Transforms使用

文章目录 一、认识Transforms二、ToTensor方法使用三、展示图片的方法 一、认识Transforms transforms 是 torchvision 库中的一个模块,它提供了一系列的图像预处理功能。这些功能可以被用来对图像数据进行变换,以便它们能够被神经网络模型更好地处理。…

24:【stm32】DMA数据搬运

DMA数据搬运 1、DMA的简介2、STM32中的DMA结构3、案列3.1、将数组DataA中的数据搬运到DataB中3.2、ADC扫描模式DMA 1、DMA的简介 DMA是直接存储器存取,它可以提供外设寄存器和存储器,存储器与存储器之间的高速数据的传输,无需CPU的干预&…

24数学建模国赛提供助攻(13——灰色系统理论)

需要资料和助攻的小伙伴可以看文章末尾链接加入企鹅!!!! 点击链接获取资料以及国赛助攻https://qm.qq.com/q/NGl6WD0Bky

手撕Python之散列类型

1.字典 思考:如果有多个数据,例如:“凯子”,“男”,19,如何快速存储这些数据 多数我们是通过列表进行存储的 li[凯子,男,19] 在定义完这个列表之后我们如何来找到数据凯子呢? 我们可以通过…

嵌入式全栈开发学习笔记---Linux系统编程(进程间通信)

目录 进程间通信概述 进程通信目的 进程间通信的发展 进程间通信分类 管道通信 无名管道 有名管道mkfifo() 信号 发送信号kill & raise 忽略信号signal() 发送信号alarm() 消息队列 消息队列使用的步骤 创建消息队列msgget() 读写消息队列msgrcv()/msgsnd()…

Your connection to this site is not secure

chrome 打开某一个网站的网页地址栏提示Your connection to this site is not secure,同一个网站的其它地址栏打开不会 无效的方案 浏览器地址栏输入: chrome://flags 找到下边的选项,从Default改为Disabled即可成功解决 亲测这个方法不行 解决方案 点击右上角的3个…

渗透测试靶机--- DC系列 DC-6

渗透测试靶机— DC系列 DC-6 开启靶机,登录页面,平平无奇 扫描ip,端口,服务等信息 访问80,发现这里是WordPress站点 直接wpscan扫描一下用户名wpscan --url http://wordy -e u 这里可以将扫出来的五个用户名保存&…

64位Office API声明语句第001讲

跟我学VBA,我这里专注VBA, 授人以渔。我98年开始,从源码接触VBA已经20余年了,随着年龄的增长,越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友,都来学习VBA,利用VBA,起码可以提高…

数理天地杂志数理天地杂志社数理天地编辑部2024年第12期目录

基础精讲 “瓜豆模型”与动点问题探析 明倩妤; 2-3 二次函数参数取值范围常见题型分析 邹纯; 4-5 基于数形结合思想的初中数学解题实践——以初中函数问题为例 李玉平; 6-7 旋转思想在构造全等三角形中的渗透 赵兴燕; 8-9 初中数学“一元一次方程”试题设计…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法,经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括: 特征提取&#xff…

实现进程间通信的几种方式

实现进程间通信的几种方式 一. 传统的进程间通信 - 管道文件 管道是 UNIX 系统中最古老的进程间通信技术。早期的管道是半双工通信,现有的系统管道是全双工通信。管道是一种特殊的文件,数据在文件中是流动的,读取之后自动消失,如…

【重学 MySQL】二、MySQL 介绍

【重学 MySQL】二、MySQL 介绍 MySQL 概述MySQL 的主要特点MySQL 的应用场景结论 MySQL 发展史初始创建与发布开源与快速成长重要版本发布收购与变革分支与竞争持续发展与现代应用 关于 MySQL8.0主要新特性和改进兼容性和迁移应用场景总结 为什么选择 MySQLOracle VS MySQL基本…

Java-线程的生命周期7大状态

在 Java 中,线程的生命周期可以分为多个状态,这些状态描述了线程从创建到终止的整个过程。Java 线程的生命周期主要包括以下七大状态: 1.新建状态(New) 当一个线程对象被创建但尚未调用 start() 方法时,线…

mysql高级sql

一,查询 1.按关键字排序 1.1用 **ORDER BY** 语句来实现排序: - ORDER BY 语句用于对查询结果进行排序。可以根据一个或多个字段的值进行升序(ASC)或降序(DESC)排序。1.2排序可针对一个或多个字段&#…