【AI知识】逻辑回归介绍+ 做二分类任务的实例(代码可视化)

1. 分类的基本概念

在机器学习的有监督学习中,分类一种常见任务,它的目标是将输入数据分类到预定的类别中。具体来说:
在这里插入图片描述

分类任务的常见应用:

  • 垃圾邮件分类:判断一封电子邮件是否是垃圾邮件 。

  • 医学诊断:根据病人的症状、检查结果等特征预测病人的疾病类型(如癌症、糖尿病等)。

分类任务的类型:

  • 二分类(Binary Classification): 在二分类问题中,模型需要将输入数据分为两个类别,输入属于两个类别中的一个。如判断一封邮件是垃圾邮件还是非垃圾邮件。

  • 多分类(Multiclass Classification): 在多分类问题中,模型需要将输入数据分为超过两个类别,输入属于多个类别中的一个。如手写数字识别(数字 0 到 9),根据图像内容将其分类为一个数字。

  • 多标签分类(Multilabel Classification): 多标签分类任务是指每个样本可以同时属于多个类别,也就是一个样本可以同时拥有多个标签。如一部电影可以同时属于“动作”和“科幻”两个类别。

分类模型的常用算法: 逻辑回归(Logistic Regression)、支持向量机(SVM, Support Vector Machine)、 K-近邻算法(KNN, K-Nearest Neighbors)、 决策树(Decision Trees)、 随机森林(Random Forest)等。

回归和分类的区别:

  • 回归(Regression): 回归任务的目标是预测一个连续的数值输出,模型输出的是一个实数值。回归常用于预测数量、价格、温度等连续型变量。
  • 分类(Classification): 分类任务的目标是将输入样本分配到有限的类别中,它的输出是离散的标签,通常是类别的编号或名称。分类问题通常用于处理类别标签的任务。

2. 逻辑回归(Logistic Regression)

逻辑回归(Logistic Regression)是一种广泛使用的线性分类模型,尽管它的名字中带有“回归”二字,但它其实是一种用于分类任务的算法,特别适用于二分类问题,也可以通过扩展来处理多分类问题。逻辑回归通过使用Sigmoid函数将线性回归的输出转换为概率值,这个概率值表示一个样本属于某个类别的概率,从而进行分类预测。

在这里插入图片描述
Sigmoid函数将线性回归的结果 𝑧 转换为一个介于 0 和 1 之间的概率值 y ^ \hat{y} y^ ,通常通过设置一个阈值(比如 0.5)来进行分类判断。如果 y ^ \hat{y} y^ >=0.5 ,则预测为类别 1,否则类别为0。

  • 逻辑回归的损失函数: 与线性回归的均方误差(MSE)不同,做二分类的逻辑回归使用的是对数损失函数(Log Loss),用于度量模型输出概率与真实标签之间的差异。
    在这里插入图片描述

  • 逻辑回归模型训练:逻辑回归通过最小化损失函数来训练模型,常用的方法是梯度下降。训练过程中,算法会迭代地调整模型参数 ,以最小化损失函数,从而使得模型的预测与真实标签更接近。

3. 逻辑回归做二分类任务的实例(代码+可视化)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler# 1. 生成一个二维特征的二分类数据集
X, y = make_classification(n_samples=400, n_features=2, n_informative=2, n_redundant=0,n_clusters_per_class=1, random_state=42)# 2. 数据标准化(可选,但常见做法)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 3. 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)# 4. 数据可视化:展示训练数据的分布
plt.figure(figsize=(8, 6))
plt.scatter(X_train[y_train == 0][:, 0], X_train[y_train == 0][:, 1], color='blue', label='Class 0', alpha=0.7)
plt.scatter(X_train[y_train == 1][:, 0], X_train[y_train == 1][:, 1], color='red', label='Class 1', alpha=0.7)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Training Data - Class Distribution')
plt.legend()
plt.show()

在这里插入图片描述

# 5. 创建逻辑回归模型并训练
model = LogisticRegression()
model.fit(X_train, y_train)# 6. 绘制决策边界函数
def plot_decision_boundary(X, y, model):# 生成网格点h = 0.01x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))# 使用模型进行预测Z = model.predict(np.c_[xx.ravel(), yy.ravel()])Z = Z.reshape(xx.shape)# 绘制决策边界plt.contourf(xx, yy, Z, alpha=0.75, cmap='bwr')plt.colorbar()# 绘制数据点plt.scatter(X[:, 0], X[:, 1], c=y, cmap='bwr', s=30, edgecolors='k')plt.xlabel('Feature 1')plt.ylabel('Feature 2')plt.title('Logistic Regression Decision Boundary')
# 7. 可视化训练集的决策边界
plt.figure(figsize=(8, 6))
plot_decision_boundary(X_train, y_train, model)
plt.show()

在这里插入图片描述

# 8. 在测试集上评估模型
test_accuracy = model.score(X_test, y_test)
print(f"Test Accuracy: {test_accuracy:.2f}")
#Test Accuracy: 0.88

解释一下决策边界: 决策边界指的是在特征空间中将不同类别的样本分开的“边界”或“界限”。它是一个假设函数的边界,能够将数据点分到不同的类别。

假设有一个二维数据集,其中每个数据点由两个特征(x 和 y)构成,类别有两种(比如“0”和“1”)。那么,决策边界就是在二维平面上,一个将类别 0 和类别 1 分开的曲线或直线,如上图。

最后: 分类任务还有很多其他算法,每个都分开写博客说明,这里只介绍逻辑回归。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为SSH2协议服务器的用户设置密钥

目录 私钥的创建1. 在服务器上直接生成2. 如果需要配置免密登录3. 查看生成的密钥 导出私钥至SSH用户获取sudo权限 新的一台服务器类型是SSH2:这表示服务器支持SSH(Secure Shell)协议的第二个版本。SSH是一个网络协议,用于加密方式…

level2逐笔委托查询接口

沪深逐笔委托队列查询 前置步骤 分配数据库服务器 查询模板 以下是沪深委托队列查询的请求模板&#xff1a; http://<数据库服务器>/sql?modeorder_book&code<股票代码>&offset<offset>&token<token>查询参数说明 参数名类型说明mo…

文献研读|基于像素语义层面图像重建的AI生成图像检测

前言&#xff1a;本篇文章主要对基于重建的AI生成图像检测的四篇相关工作进行介绍&#xff0c;分别为基于像素层面重建的检测方法 DIRE 和 Aeroblade&#xff0c;以及基于语义层面重建的检测方法 SimGIR 和 Zerofake&#xff1b;并对相应方法进行比较。 相关文章&#xff1a;论…

VScode MAC按任意键关闭终端 想要访问桌面文件

说明 最近配置MAC上CPP的运行环境&#xff0c;在安装必要的CPP插件后&#xff0c;配置launch和task等json文件后&#xff0c;点击运行三角形&#xff0c;每次都会跳出main想要访问桌面上的文件。并且输出也是在调试控制台&#xff0c;非常逆天。 尝试 尝试1:尽管我尝试将ta…

Linux Shell 脚本编程基础知识篇

ℹ️大家好&#xff0c;我是练小杰&#xff0c;从本文是Linux shell脚本编程的基础知识内容&#xff0c;后续我会不断补充~~ 更多Linux 相关内容请点击&#x1f449;“Linux专栏”~ 假面驾驭&#xff0c;时王&#xff0c;假面骑士时王~~ 文章目录 什么是 Linux Shell主要功能…

QT绘制同心扇形

void ChartForm::paintEvent(QPaintEvent *) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);// 设置抗锯齿painter.save();// 设置无边框&#xff08;不需要设置QPen&#xff0c;因为默认是不绘制边框的&#xff09;QPen pen(Qt::NoPen);// QPen pen…

TL3568/TL3562更改主机名,在Kernel用menuconfig失效

前言 最近在玩RK3562开发板&#xff0c;想改串口调试时看到的主机名&#xff0c;开发板的主机名默认是RK3562-Tronlong&#xff0c;如图&#xff1a; 按照之前玩T113开发版&#xff0c;在Kernel通过make menuconfig&#xff0c;可以改。但是在这个RK3562&#xff0c;改了后&…

【PLL】ISSCC 2024 Tutorial: Calibration Techniques in PLLs

1. 数字辅助模拟电路 为什么要辅助&#xff0c;或替换模拟电路&#xff1f; 利用CMOS管子尺寸缩小&#xff0c;降低功耗 和 减小面积校正模拟电路的 非线性行为 和 失配 数字辅助的好处&#xff1a; 简化模拟电路设计提高能源效率&#xff0c;提高准确度 2. 锁相环基础 2.1 概…

STM32-笔记5-按键点灯(中断方法)

1、复制03-流水灯项目&#xff0c;重命名06-按键点灯&#xff08;中断法&#xff09; 在\Drivers\BSP目录下创建一个文件夹exti&#xff0c;在该文件夹下&#xff0c;创建两个文件exti.c和exti.h文件&#xff0c;并且把这两个文件加载到项目中&#xff0c;打开项目工程文件 加载…

Mvc、Springmvc框架

一.Mvc&#xff1a; 1.概念&#xff1a; MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 、View视图 、Controller控制层&#xff1b; 结构图&#xff1a; 二.Springmvc: 1.概念&#xff1a; springmvc框架它是spring框架的一个分支。它是按照mvc架构思想设计…

spring使用rabbitmq当rabbitmq集群节点挂掉 spring rabbitmq怎么保证高可用,rabbitmq网络怎么重新连接

##spring rabbitmq代码示例 Controller代码 import com.alibaba.fastjson.JSONObject; import com.newland.mi.config.RabbitDMMQConfig; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageProperties; import org.springframewo…

前端面试问题集合

0 HTML5相关 websocket WebSocket 使用ws或wss协议&#xff0c;Websocket是一个持久化的协议&#xff0c;相对于HTTP这种非持久的协议来说。WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻&#xff0c;相互推送信息。WebSocket并不限于以Ajax(或X…

RabbitMQ如何构建集群?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ如何构建集群&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ如何构建集群&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在RabbitMQ中&#xff0c;集群&#xff08;Cluster&#x…

3大Excel免费功能

推荐几个免费excel图表绘制工具 Power Map Power Map是Excel的内置功能 Power Map可在Windows用户的Excel 2013或者Excel 2016或者Office 365中使用,如下图, 看案例 动态地图1 动态地图2

概率论得学习和整理31: 连续型随机变量的概率本质是求面积,均匀分布等

目录 1 连续性随机变量 2 连续性随机变量和 离散型随机变量&#xff0c;分布的区别 3 不要混淆概念 4 均匀分布的相关 4.1 定义 4.2 例子 1 连续性随机变量 连续性随机变量最大的特点&#xff0c;单个点上的概率0多了一个分布函数&#xff0c;因为从1维变2维了&#xff…

素数回文数的个数

素数回文数的个数 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 求11到n之间&#xff08;包括n&#xff09;&#xff0c;既是素数又是回文数的整数有多少个。 输入 一个大于11小于1000的整数n。 输出…

FFmpeg库之ffmpeg

文章目录 ffmpeg命令行使用基本命令选择流 -map选项 主要命令视频选项音频选项多媒体格式转换滤镜裁剪加水印画中画 录制查看可用的录制设备查看录制设备选项参数录制桌面录制窗口录制摄像头录制麦克风录制系统声音同时录制桌面和麦克风 直播推流拉流 ffmpeg命令行使用 ffmpeg…

牛客周赛 Round 72 题解

本次牛客最后一个线段树之前我也没碰到过&#xff0c;等后续复习到线段树再把那个题当例题发出来 小红的01串&#xff08;一&#xff09; 思路&#xff1a;正常模拟&#xff0c;从前往后遍历一遍去统计即可 #include<bits/stdc.h> using namespace std; #define int lo…

SKETCHPAD——允许语言模型生成中间草图,在几何、函数、图算法和游戏策略等所有数学任务中持续提高基础模型的性能

概述 论文地址&#xff1a;https://arxiv.org/pdf/2406.09403 素描是一种应用广泛的有效工具&#xff0c;包括产生创意和解决问题。由于素描能直接传达无法用语言表达的视觉和空间信息&#xff0c;因此从古代岩画到现代建筑图纸&#xff0c;素描在世界各地被用于各种用途。儿童…

SpringBoot整合druid数据源

SprintBoot默认使用的是HikariDataSource数据源&#xff0c;而且上次课中我们也说了这个数据源访问速度很快&#xff0c;但是这里还要给大家介绍一个第三方的数据源druid&#xff0c;它是阿里开发的一款开源的数据源&#xff0c;被很多人认为是Java语言中最好的数据库连接池&am…