【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据))

news2024/12/28 18:26:07

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据)

  • 1.模型原理
  • 2.模型参数
  • 3.文件结构
  • 4.Excel数据
  • 5.下载地址
  • 6.完整代码
  • 7.运行结果

1.模型原理

逻辑回归是一种用于二分类问题的统计学习方法,尽管名字中含有“回归”,但实际上是一种分类算法。它的基本原理是通过建立一个线性模型,然后将线性输出映射到一个概率值,最终将这个概率值转换成二分类的预测结果。

下面是逻辑回归的基本原理:

  1. 线性模型: 首先,逻辑回归建立一个线性模型,将特征的线性组合映射到一个连续的实数范围。对于一个有n个特征的样本,线性模型可以表示为:
    z = b + w 1 x 1 + w 2 x 2 + … + w n x n z = b + w_1x_1 + w_2x_2 + \ldots + w_nx_n z=b+w1x1+w2x2++wnxn
    其中, z z z是线性组合的结果, b b b是偏差项(截距), w i w_i wi是特征的权重, x i x_i xi是对应的特征值。

  2. Sigmoid函数(Logistic函数): 为了将线性模型的输出转换成概率值,逻辑回归使用Sigmoid函数(也称为Logistic函数)来实现这个映射。Sigmoid函数将任意实数映射到0到1的区间,它的公式为:
    σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1
    其中, e e e是自然对数的底数。

  3. 概率预测: 经过Sigmoid函数映射后, z z z被转换成了一个0到1之间的概率值,表示样本属于正类的概率。对于二分类问题,通常将概率大于等于0.5的预测为正类,小于0.5的预测为负类。

  4. 决策边界: 在训练过程中,逻辑回归通过调整权重 w i w_i wi和偏差 b b b来拟合训练数据。拟合的过程实际上是在找到一个适合的决策边界,将不同类别的样本分开。决策边界可以是一个超平面,使得在超平面上的点被分类为正类,超平面之外的点被分类为负类。

  5. 损失函数和优化: 逻辑回归使用最大似然估计来确定参数,即找到能够使得观测数据出现的概率最大的参数。损失函数常用的是对数似然损失函数。模型通过优化算法(如梯度下降)来最小化损失函数,从而找到最佳的权重 w i w_i wi和偏差 b b b

总之,逻辑回归通过线性模型和Sigmoid函数将特征映射到概率值,然后通过优化算法来调整模型参数,使得概率预测尽可能地与实际标签一致,从而实现对样本的分类预测。

2.模型参数

LogisticRegression类的构造函数允许你传递一系列参数来自定义模型的行为。你可以根据需要修改这些参数以优化模型的性能。以下是一些常用的参数及其说明:

  1. penalty: 正则化项,可以是 “l1”、“l2”、“elasticnet” 或 “none”。默认是 “l2”。

  2. C: 正则化强度的倒数,必须为正数。较小的值表示更强的正则化。默认为1.0。

  3. solver: 优化算法,可以是 “newton-cg”、“lbfgs”、“liblinear”、“sag” 或 “saga”。默认是 “lbfgs”。

  4. max_iter: 最大迭代次数,用于算法收敛。默认为100。

  5. multi_class: 多分类问题的策略,可以是 “auto”、“ovr” 或 “multinomial”。默认是 “auto”。

  6. random_state: 随机数生成器的种子,用于重现随机初始化。

  7. class_weight: 类别权重,用于处理不平衡数据集。

  8. tol: 收敛容忍度,用于控制算法停止的条件。

等等。

你可以在创建LogisticRegression对象时,通过参数传递来修改这些选项。例如:

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(penalty='l1', C=0.1, solver='saga', max_iter=500)

在这个例子中,我们使用了不同于默认值的正则化方式、正则化强度、优化算法和最大迭代次数。

你可以根据自己的数据和任务需求来调整这些参数,以获得更好的模型性能。不同的参数组合可能会对模型的性能产生不同的影响,因此在选择参数时可以尝试不同的组合,并根据交叉验证等方法来选择最佳的参数设置。

3.文件结构

在这里插入图片描述

iris.xlsx						% 可替换数据集
Main.py							% 主函数

4.Excel数据

在这里插入图片描述

5.下载地址

- 资源下载地址

6.完整代码

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns

def logistic_regression_classification(data_path, test_size=0.2, random_state=42):
    # 加载数据
    data = pd.read_excel(data_path)

    # 分割特征和标签
    X = data.iloc[:, :-1]  # 所有列除了最后一列
    y = data.iloc[:, -1]   # 最后一列

    # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=random_state)

    # 创建逻辑回归模型
    # 1. ** penalty: ** 正则化项,可以是"l1"、"l2"、"elasticnet"或"none"。默认是"l2"。
    # 2. ** C: ** 正则化强度的倒数,必须为正数。较小的值表示更强的正则化。默认为1.0。
    # 3. ** solver: ** 优化算法,可以是"newton-cg"、"lbfgs"、"liblinear"、"sag"或"saga"。默认是"lbfgs"。
    # 4. ** max_iter: ** 最大迭代次数,用于算法收敛。默认为100。
    # 5. ** multi_class: ** 多分类问题的策略,可以是"auto"、"ovr"或"multinomial"。默认是"auto"。
    # 6. ** random_state: ** 随机数生成器的种子,用于重现随机初始化。
    # 7. ** class_weight: ** 类别权重,用于处理不平衡数据集。
    # 8. ** tol: ** 收敛容忍度,用于控制算法停止的条件。
    model = LogisticRegression(penalty='l1', C=0.1, solver='saga', max_iter=1000)

    # 在训练集上训练模型
    model.fit(X_train, y_train)

    # 在测试集上进行预测
    y_pred = model.predict(X_test)

    # 计算准确率
    accuracy = accuracy_score(y_test, y_pred)
    return confusion_matrix(y_test, y_pred), y_test.values, y_pred, accuracy

if __name__ == "__main__":
    # 使用函数进行分类任务
    data_path = "iris.xlsx"
    confusion_mat, true_labels, predicted_labels, accuracy = logistic_regression_classification(data_path)

    print("真实值:",true_labels)
    print("预测值:", predicted_labels)
    print("准确率:{:.2%}".format(accuracy))

    # 绘制混淆矩阵
    plt.figure(figsize=(8, 6))
    sns.heatmap(confusion_mat, annot=True, fmt="d", cmap="Blues")
    plt.title("Confusion Matrix")
    plt.xlabel("Predicted Labels")
    plt.ylabel("True Labels")
    plt.show()

    # 用圆圈表示真实值,用叉叉表示预测值
    # 绘制真实值与预测值的对比结果
    plt.figure(figsize=(10, 6))
    plt.plot(true_labels, 'o', label="True Labels")
    plt.plot(predicted_labels, 'x', label="Predicted Labels")

    plt.title("True Labels vs Predicted Labels")
    plt.xlabel("Sample Index")
    plt.ylabel("Label")
    plt.legend()
    plt.show()

7.运行结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Redis 缓存过期及删除

一、Redis缓存过期策略 物理内存达到上限后,像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。 内存与硬盘交换 (swap) 虚拟内存,频繁I0 性能急剧下降,会造成redis内存急剧下降; 一般设置物理内存的3/4,在redis…

Java算法_ 二叉树的中序遍历(LeetCode_Hot100)

题目描述:给定一个二叉树的根节点 ,返回 它的 中序 遍历 。root 获得更多?算法思路:代码文档,算法解析的私得。 运行效果 完整代码 import java.util.ArrayList; import java.util.List;/*** 2 * Author: LJJ* 3 * Date: 2023/8/…

PyTorch深度学习实践---笔记

PyTorch深度学习实践---笔记 2.线性模型(Linear Model)2.exercise 3. 梯度下降算法(Gradient Descent)3.1梯度下降(Gradient Descent)3.2 随机梯度下降(Stochastic Gradient Descent&#xff09…

编译OpenCV问题解决:已经编译OpenCV成功之后无法运行测试代码

报错问题如下&#xff1a; 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class c…

【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像

关于 Cloud Studio Cloud Studio 是基于浏览器的集成式开发环境(IDE)&#xff0c;为开发者提供了一个永不间断的云端工作站。用户在使用Cloud Studio 时无需安装&#xff0c;随时随地打开浏览器就能在线编程。 Cloud Studio 作为在线IDE&#xff0c;包含代码高亮、自动补全、Gi…

GIt Squash 多个提交压缩提交

假设你有一个名为 feature 的分支&#xff0c;它包含三个提交&#xff08;A, B, C&#xff09;&#xff0c;并且你想将这三个提交压缩成一个。下面是如何做到这一点的。 首先&#xff0c;找出你要开始压缩的那个最早提交的哈希值。在这个例子中&#xff0c;我们假设 A 是最早的…

RK3588平台开发系列讲解(AI 篇)RKNPU 推理软件框架

文章目录 一、推理软件框架二、RKNN 模型三、学习步骤整理沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解什么是RKNPU。 一、推理软件框架 RKNPU 硬件层 RKNPU 驱动层 RKNPU 的驱动层是连接上层应用和 RKNPU 硬件的桥梁。驱动层的主要作用是将应用程序…

Health Kit基于数据提供专业方案,改善用户睡眠质量

什么是CBT-I? 中国社科院等机构今年发布的《中国睡眠研究报告2023》内容显示&#xff0c;2022年&#xff0c;受访者的每晚平均睡眠时长为7.40小时&#xff0c;近半数受访者的每晚平均睡眠时长不足8小时(47.55%)&#xff0c;16.79%的受访者的每晚平均睡眠时长不足7小时。这些数…

shell脚本和解释器

shell脚本和解释器 #!是shell脚本文件的标识&#xff0c;/bin/bash代表要使用的解析器&#xff0c;#是注释符号 test.sh #!/bin/bashls whoami #下面这条命令会执行失败&#xff0c;但不会影响其他命令的执行 cat /etc/shadow ps对于上面的脚本文件&#xff0c;后缀是.sh或者…

Leaflet入门,Leaflet如何自定义版权信息,以vue2-leaflet修改自定义版权为例

前言 本章讲解使用Leaflet的vue2-leaflet或者vue-leaflet插件来实现自定义版权信息的功能。 # 实现效果演示 见图片右下角版权信息 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定式的使用Leaflet地图,以及初始化后拿到leaflet对象…

三、Dubbo 注册中心

三、Dubbo 注册中心 3.1 注册中心概述 主要作用 动态加入&#xff1a;服务提供者通过注册中心动态地把自己暴露给其他消费者动态发现&#xff1a;消费者动态地感知新的配置、路由规则和新的服务提供者动态调整&#xff1a;注册中心支持参数的动态调整&#xff0c;新参数自动更…

[HDLBits] Exams/m2014 q4d

Implement the following circuit: module top_module (input clk,input in, output out);always(posedge clk) beginout<out^in;end endmodule直接写out^in就行

LangChain手记 Chains

整理并翻译自DeepLearning.AILangChain的官方课程&#xff1a;Chains&#xff08;源代码可见&#xff09; Chains 直译链&#xff0c;表达的意思更像是对话链&#xff0c;对话链的背后是思维链 LLM Chain&#xff08;LLM链&#xff09; 首先介绍了一个最简单的例子&#xff0c…

解决xss转义导致转码的问题

一、xss简介 人们经常将跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;缩写为CSS&#xff0c;但这会与层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;的缩写混淆。因此&#xff0c;有人将跨站脚本攻击缩写为XSS。跨站脚本攻击&#xff…

【量化课程】02_3.投资学基础概念

文章目录 1. 投资和投资学的关系1.1 什么是投资&#xff1f;1.2 什么是投资学&#xff1f; 2. 投资学的主要内容2.1 金融市场与投资环境2.1.1 金融资产2.1.2 债券市场的意义2.1.3 金融市场与经济2.1.4 投资过程2.1.5 竞争性的市场2.1.6 市场参与者2.1.7 主要的市场债券市场外汇…

KCC@广州开源读书会广州开源建设讨论会

亲爱的开源读书会朋友们&#xff0c; 在下个周末我们将举办一场令人激动的线下读书会&#xff0c;探讨两本引人入胜的新书《只是为了好玩》和《开源之迷》。作为一个致力于推广开源精神和技术创新的社区&#xff0c;这次我们还邀请了圈内大咖前来参与&#xff0c;会给大家提供一…

概念解析 | 隐式神经表示:揭开神经网络黑盒的奥秘

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:隐式神经表示(Implicit Neural Representations) 隐式神经表示:揭开神经网络黑盒的奥秘 近年来,神经网络在各种任务上取得了惊人的进步,但其内部表示方式依然难以解读,被称为“…

交互消息式IMessage扩展开发记录

IMessage扩展简介 iOS10新加入的基于iMessage的应用扩展&#xff0c;可以丰富发送消息的内容。&#xff08;分享表情、图片、文字、视频、动态消息&#xff1b;一起完成任务或游戏。&#xff09; 简单的将发送的数据内型分为三种&#xff1a; 1.贴纸Stickers&#xff1b; 2.交…

arcgis pro3.0-3.0.1-3.0.2安装教程大全及安装包下载

一. 产品介绍&#xff1a; ArcGIS Pro 这一功能强大的单桌面 GIS 应用程序是一款功能丰富的软件&#xff0c;采用 ArcGIS Pro 用户社区提供的增强功能和创意进行开发。 ArcGIS Pro 支持 2D、3D 和 4D 模式下的数据可视化、高级分析和权威数据维护。 支持通过 Web GIS 在一系列 …

栈和队列--受限制的线性表

目录 和队列的定义和特点 1.1栈的定义和特点、 1.2队列的定义和特点 1.3栈和队列的应用 2.栈的表示和操作的实现 2.1栈的类型定义 2.2顺序栈的表示和实现 2.2.1初始化 2.2.2入栈 2.2.3出栈 2.2.4取栈顶元素 2.3链栈的表示和实现 2.2.1初始化 2.2.2入栈 2.2.3出栈…