逻辑回归简介和实现

一、逻辑回归简介

逻辑回归是一种二分类算法,常用于解决问题:某件事情能/不能发生、某个人患病/不患病等。逻辑回归算法的输入是一些特征,输出是取值为0或1的标签,它的目标是通过学习来预测输入与输出之间的关系。

逻辑回归模型基于 sigmoid 函数(或 logistic 函数)进行建模。sigmoid 函数的定义为:$f(x)=\frac{1}{1+e^{-x}}$。它能将任意输入映射到区间 [0,1] 上,这就使得它非常适合用于实现二分类问题。

二、逻辑回归算法实现

1. 数据预处理

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

# 加载数据集
data = pd.read_csv('data.csv')
X = data.iloc[:, :-1]
y = data.iloc[:, -1]

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

# 特征缩放
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

2. 模型训练

from sklearn.linear_model import LogisticRegression

# 创建逻辑回归对象
classifier = LogisticRegression(random_state=0)

# 用训练集训练模型
classifier.fit(X_train, y_train)

3. 模型预测

# 对测试集做预测
y_pred = classifier.predict(X_test)

4. 模型评估

from sklearn.metrics import confusion_matrix, accuracy_score

# 创建混淆矩阵
cm = confusion_matrix(y_test, y_pred)
print("混淆矩阵:\n", cm)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

三、逻辑回归在sklearn中的应用

1. API说明

在sklearn中,逻辑回归算法的API为:LogisticRegression。

2. 代码示例

from sklearn.linear_model import LogisticRegression

# 创建逻辑回归对象
classifier = LogisticRegression(random_state=0)

# 用训练集训练模型
classifier.fit(X_train, y_train)

# 对测试集做预测
y_pred = classifier.predict(X_test)

# 计算准确率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

四、逻辑回归的应用

1. 二分类问题

逻辑回归常用于二分类问题,例如预测一个人会/不会购买某个商品、预测一个客户可能/不可能违约等。

2. 多分类问题

逻辑回归也可以应用于多分类问题。一种常用的方法是采用 One-vs-All(OvA)策略。即对于有 n 个类别的问题,训练 n 个分类器,每个分类器分别将一个类别看作正例,其余类别看作反例。最后,将这些分类器组合成一个大模型,再根据输入的特征进行分类。

3. 特征工程

特征工程是提高模型性能的重要步骤。通过对原始特征的处理,可以提取出更有价值的特征。例如,可以通过多项式扩展、归一化、特征选择等方式来提高模型表现。

4. 模型优化

逻辑回归模型的性能可以通过多种方式进行优化。例如,可以通过正则化、调整参数、使用Ensemble方法等方式来提高模型表现。

5. 实现案例:银行贷款违约预测

银行贷款违约预测是一个典型的二分类问题,可以使用逻辑回归模型进行预测。我们可以使用已有的数据来训练模型,从而预测哪些客户可能违约。

首先,我们需要加载数据集,并对数据进行预处理。下面的代码演示了如何对数据进行处理。

import pandas as pd
from sklearn.preprocessing import LabelEncoder

# 加载数据集
data = pd.read_csv("bank-full.csv", delimiter=";")
y = data["y"]
X = data.drop("y", axis=1)

# 类别型特征编码
categorical_features = ["job", "marital", "education", "default", "housing", "loan", "contact", "month", "poutcome"]
for feature in categorical_features:
    encoder = LabelEncoder()
    X[feature] = encoder.fit_transform(X[feature])

# 转换哑变量
X = pd.get_dummies(X, columns=categorical_features)

# 将标签 y 转换为 0 和 1
y = (y == "yes").astype(int)

接着,我们可以将数据集划分为训练集和测试集,并使用逻辑回归模型训练和预测。下面的代码演示了如何训练和预测模型。

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

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

# 训练模型
model = LogisticRegression()
model.fit(X_train, y_train)

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

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

原创文章,作者:ILUJH,如若转载,请注明出处:https://www.506064.com/n/369738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ILUJHILUJH
上一篇 2025-04-13 11:45
下一篇 2025-04-13 11:45

相关推荐

  • Java2D物理引擎简介及应用

    本文将介绍Java2D物理引擎的基本概念、实现原理及应用案例,以及对应代码示例。 一、物理引擎概述 物理引擎是一种计算机程序,用于模拟物理系统中的对象和其互动,如重力、碰撞、弹力等…

    编程 2025-04-29
  • Django框架:从简介到项目实战

    本文将从Django的介绍,以及如何搭建Django环境开始,逐步深入到Django模型、视图、模板、表单,最后通过一个小型项目实战,进行综合性的应用,让读者获得更深入的学习。 一…

    编程 2025-04-28
  • Python三体运动简介

    本文将从多个方面详细阐述Python三体运动,包括什么是三体运动,三体运动的公式与原理,实现三体运动的Python代码等内容。 一、什么是三体运动? 三体运动是指三个天体相互作用所…

    编程 2025-04-27
  • Java中的僵尸进程简介与解决方法

    本文将对Java中的僵尸进程进行详细阐述,并给出几种解决方法。 一、僵尸进程的概念 在操作系统中,进程是指正在执行的程序。当一个进程创建了一个子进程,而该子进程完成了任务却没有被父…

    编程 2025-04-27
  • PyTorch模块简介

    PyTorch是一个开源的机器学习框架,它基于Torch,是一个Python优先的深度学习框架,同时也支持C++,非常容易上手。PyTorch中的核心模块是torch,提供一些很好…

    编程 2025-04-27
  • Python底层逻辑解析

    Python作为一种高级编程语言,越来越受到开发者的青睐。但是作为一名优秀的Python开发者,对Python底层的逻辑也需要有一定了解。本文将从多个方面详细阐述Python底层逻…

    编程 2025-04-27
  • Python逻辑运算符优先级

    本篇文章将从多个方面对Python逻辑运算符优先级进行详细阐述,包括优先级规则、优先级示例及代码实现等内容。 一、优先级规则 在Python中,逻辑运算符的优先级从高到低依次为“n…

    编程 2025-04-27
  • Python操作DB文件简介

    本文将从以下几个方面详细阐述如何使用Python操作DB文件: 创建和打开DB文件 执行SQL语句 读取和写入数据 关闭DB文件 一、创建和打开DB文件 Python内置了SQLi…

    编程 2025-04-27
  • Python写Word模板简介

    Python可以用来生成Word文档,让你可以自动化生成报表、合同、申请表等文档。本文将从多个方面详细介绍Python写Word模板的方法和技巧。 一、Word模板的结构 要生成W…

    编程 2025-04-27
  • 逻辑回归对自变量的要求

    逻辑回归是一种常用的分类算法,它通过训练样本数据来建立模型,并通过对新样本的归类来预测输出结果。逻辑回归对自变量有一定的要求,本文将从多个方面进行阐述。 一、变量的线性关系 逻辑回…

    编程 2025-04-27

发表回复

登录后才能评论