当前位置: 首页 > news >正文

深入了解逻辑回归:机器学习中的经典算法

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:微信小程序——用户隐私保护指引填写(详细版)

文章目录

  • 引言
    • 1. 逻辑回归的基本原理
      • 1.1 线性组合
      • 1.2 Sigmoid函数
      • 1.3 概率预测
      • 1.4 决策边界
      • 1.5 损失函数
      • 1.6 优化过程
    • 2. 数学模型
      • 2.1 线性组合
      • 2.2 Sigmoid函数
      • 2.3 概率预测
      • 2.4 决策边界
      • 2.5 损失函数
      • 2.6 优化过程
    • 3. 实现步骤
      • 3.1 数据准备
      • 3.2 特征缩放
      • 3.3 模型训练
        • 3.3.1 初始化参数
        • 3.3.2 定义损失函数
        • 3.3.3 计算梯度
        • 3.3.4 更新参数
        • 3.3.5 迭代训练
      • 3.4 模型评估
      • 3.5 预测
    • 4. 应用场景
      • 4.1 医疗领域
        • 示例代码
      • 4.2 金融领域
        • 示例代码
      • 4.3 市场营销
        • 示例代码
  • 总结

在这里插入图片描述

引言

  在机器学习的广阔领域中,逻辑回归作为一种经典的统计学习方法,凭借其简单性和有效性,始终占据着重要的地位。尽管其名称中包含“回归”二字,逻辑回归实际上是一种用于分类问题的算法,特别适合处理二分类任务。它的基本思想是通过对输入特征的线性组合,预测某一事件发生的概率,从而为决策提供依据。

  逻辑回归的魅力在于其直观的数学模型和易于解释的结果。与其他复杂的机器学习算法相比,逻辑回归的模型参数可以直接反映特征对预测结果的影响,这使得它在许多应用场景中成为首选工具。例如,在医疗领域,逻辑回归可以帮助医生判断患者是否患有某种疾病;在金融行业,它可以用于信用评分,评估借款人是否可能违约。

  此外,逻辑回归的实现相对简单,适合初学者学习和掌握机器学习的基本概念。通过对逻辑回归的深入理解,学习者不仅能够掌握分类算法的核心思想,还能为后续学习更复杂的模型打下坚实的基础。

  在本文中,我们将详细探讨逻辑回归的基本原理、数学模型、实现步骤以及其在实际应用中的表现。通过对这些内容的深入分析,读者将能够全面理解逻辑回归的工作机制,并在实际问题中有效应用这一经典算法。无论你是机器学习的初学者,还是希望巩固基础知识的从业者,逻辑回归都是一个不可或缺的学习内容。

1. 逻辑回归的基本原理

  逻辑回归是一种用于分类问题的统计方法,尤其适合处理二分类任务。它的核心思想是通过对输入特征的线性组合来预测某一事件发生的概率。尽管其名称中包含“回归”一词,但逻辑回归实际上是一种分类算法。以下将详细阐述逻辑回归的基本原理,并通过不同的颜色来区分关键知识点。

1.1 线性组合

逻辑回归的基本思想是通过对输入特征的线性组合来预测事件的发生概率。假设我们有一个特征向量 X = [ x 1 , x 2 , … , x n ] \textcolor{blue}{X} = [x_1, x_2, \ldots, x_n] X=[x1,x2,,xn],逻辑回归模型可以表示为:

z = W T X + b \textcolor{red}{z} = \textcolor{orange}{W^T X + b} z=WTX+b

其中:

  • W = [ w 1 , w 2 , … , w n ] \textcolor{orange}{W = [w_1, w_2, \ldots, w_n]} W=[w1,w2,,wn] 是权重向量,表示每个特征对预测结果的影响。
  • b \textcolor{green}{b} b 是偏置项,帮助模型更好地拟合数据。

1.2 Sigmoid函数

为了将线性组合的结果 z \textcolor{red}{z} z 转换为概率值,逻辑回归使用了Sigmoid函数(逻辑函数),其公式为:

σ ( z ) = 1 1 + e − z \textcolor{purple}{\sigma(z) = \frac{1}{1 + e^{-z}}} σ(z)=1+ez1

Sigmoid函数的图像呈S形,能够将任意实数映射到0和1之间。当 z \textcolor{orange}{z} z 趋近于正无穷时, σ ( z ) \textcolor{purple}{\sigma(z)} σ(z) 趋近于1;当 z \textcolor{orange}{z} z 趋近于负无穷时, σ ( z ) \textcolor{purple}{\sigma(z)} σ(z) 趋近于0。这使得我们可以将逻辑回归模型的输出解释为事件发生的概率:

P ( Y = 1 ∣ X ) = σ ( W T X + b ) \textcolor{blue}{P(Y=1|X) = \sigma(W^T X + b)} P(Y=1∣X)=σ(WTX+b)

1.3 概率预测

逻辑回归模型的输出是一个概率值,表示在给定特征 X \textcolor{blue}{X} X 的情况下,事件 Y \textcolor{blue}{Y} Y 发生的概率。我们可以将其表示为:

P ( Y = 1 ∣ X ) = σ ( z ) \textcolor{blue}{P(Y=1|X) = \sigma(z)} P(Y=1∣X)=σ(z)

同时,事件 Y \textcolor{blue}{Y} Y 不发生的概率可以表示为:

P ( Y = 0 ∣ X ) = 1 − P ( Y = 1 ∣ X ) = 1 − σ ( z ) \textcolor{blue}{P(Y=0|X) = 1 - P(Y=1|X) = 1 - \sigma(z)} P(Y=0∣X)=1P(Y=1∣X)=1σ(z)

1.4 决策边界

在逻辑回归中,我们通常设定一个阈值(通常为0.5)来进行分类。当预测的概率 P ( Y = 1 ∣ X ) \textcolor{blue}{P(Y=1|X)} P(Y=1∣X) 大于或等于0.5时,我们将样本分类为正类(1);否则,分类为负类(0)。这个阈值决定了模型的决策边界,影响分类结果。

1.5 损失函数

为了训练逻辑回归模型,我们需要定义一个损失函数来衡量模型预测与实际标签之间的差距。逻辑回归通常使用交叉熵损失(Cross-Entropy Loss),其公式为:

L ( W , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) ) ) ] \textcolor{brown}{L(W, b) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h(x^{(i)})) + (1 - y^{(i)}) \log(1 - h(x^{(i)}))]} L(W,b)=m1i=1m[y(i)log(h(x(i)))+(1y(i))log(1h(x(i)))]

其中:

  • m \textcolor{orange}{m} m 是样本数量。
  • y ( i ) \textcolor{red}{y^{(i)}} y(i) 是第 i i i 个样本的真实标签(0或1)。
  • h ( x ( i ) ) = σ ( W T x ( i ) + b ) \textcolor{purple}{h(x^{(i)}) = \sigma(W^T x^{(i)} + b)} h(x(i))=σ(WTx(i)+b) 是模型对第 i i i 个样本的预测概率。

交叉熵损失函数的目标是最小化预测概率与真实标签之间的差异,从而提高模型的准确性。

1.6 优化过程

为了找到最佳的模型参数 W \textcolor{orange}{W} W b \textcolor{green}{b} b,我们通常使用优化算法,如梯度下降(Gradient Descent)。梯度下降的基本思想是通过计算损失函数关于参数的梯度,逐步更新参数,以最小化损失函数。参数更新的公式为:

W : = W − α ∂ L ∂ W \textcolor{orange}{W := W - \alpha \frac{\partial L}{\partial W}} W:=WαWL

b : = b − α ∂ L ∂ b \textcolor{green}{b := b - \alpha \frac{\partial L}{\partial b}} b:=bαbL

其中, α \textcolor{purple}{\alpha} α 是学习率,控制每次更新的步长。

2. 数学模型

  逻辑回归的数学模型是其核心部分,涉及到线性组合、Sigmoid函数、概率预测和损失函数等多个方面。以下将详细阐述逻辑回归的数学模型,并通过不同的颜色来区分关键知识点。

2.1 线性组合

逻辑回归的基本思想是通过对输入特征的线性组合来预测事件的发生概率。假设我们有一个特征向量 X = [ x 1 , x 2 , … , x n ] X = [x_1, x_2, \ldots, x_n] X=[x1,x2,,xn],逻辑回归模型可以表示为:

z = W T X + b \textcolor{blue}{z} = \textcolor{red}{W^T X + b} z=WTX+b

其中:

  • W = [ w 1 , w 2 , … , w n ] \textcolor{red}{W = [w_1, w_2, \ldots, w_n]} W=[w1,w2,,wn] 是权重向量,表示每个特征对预测结果的影响。
  • b \textcolor{green}{b} b 是偏置项,帮助模型更好地拟合数据。

2.2 Sigmoid函数

在这里插入图片描述

为了将线性组合的结果 z z z 转换为概率值,逻辑回归使用了Sigmoid函数(逻辑函数),其公式为:

σ ( z ) = 1 1 + e − z \textcolor{purple}{\sigma(z) = \frac{1}{1 + e^{-z}}} σ(z)=1+ez1

Sigmoid函数的图像呈S形,能够将任意实数映射到0和1之间。当 z \textcolor{orange}{z} z 趋近于正无穷时, σ ( z ) \textcolor{purple}{\sigma(z)} σ(z) 趋近于1;当 z \textcolor{orange}{z} z 趋近于负无穷时, σ ( z ) \textcolor{purple}{\sigma(z)} σ(z) 趋近于0。这使得我们可以将逻辑回归模型的输出解释为事件发生的概率:

P ( Y = 1 ∣ X ) = σ ( W T X + b ) \textcolor{blue}{P(Y=1|X) = \sigma(W^T X + b)} P(Y=1∣X)=σ(WTX+b)

2.3 概率预测

逻辑回归模型的输出是一个概率值,表示在给定特征 X X X 的情况下,事件 Y Y Y 发生的概率。我们可以将其表示为:

P ( Y = 1 ∣ X ) = σ ( z ) \textcolor{blue}{P(Y=1|X) = \sigma(z)} P(Y=1∣X)=σ(z)

同时,事件 Y Y Y 不发生的概率可以表示为:

P ( Y = 0 ∣ X ) = 1 − P ( Y = 1 ∣ X ) = 1 − σ ( z ) \textcolor{blue}{P(Y=0|X) = 1 - P(Y=1|X) = 1 - \sigma(z)} P(Y=0∣X)=1P(Y=1∣X)=1σ(z)

2.4 决策边界

在逻辑回归中,我们通常设定一个阈值(通常为0.5)来进行分类。当预测的概率 P ( Y = 1 ∣ X ) \textcolor{blue}{P(Y=1|X)} P(Y=1∣X) 大于或等于0.5时,我们将样本分类为正类(1);否则,分类为负类(0)。这个阈值决定了模型的决策边界,影响分类结果。

2.5 损失函数

为了训练逻辑回归模型,我们需要定义一个损失函数来衡量模型预测与实际标签之间的差距。逻辑回归通常使用交叉熵损失(Cross-Entropy Loss),其公式为:

L ( W , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) ) ) ] \textcolor{brown}{L(W, b) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h(x^{(i)})) + (1 - y^{(i)}) \log(1 - h(x^{(i)}))]} L(W,b)=m1i=1m[y(i)log(h(x(i)))+(1y(i))log(1h(x(i)))]

其中:

  • m \textcolor{orange}{m} m 是样本数量。
  • y ( i ) \textcolor{red}{y^{(i)}} y(i) 是第 i i i 个样本的真实标签(0或1)。
  • h ( x ( i ) ) = σ ( W T x ( i ) + b ) \textcolor{purple}{h(x^{(i)}) = \sigma(W^T x^{(i)} + b)} h(x(i))=σ(WTx(i)+b) 是模型对第 i i i 个样本的预测概率。

交叉熵损失函数的目标是最小化预测概率与真实标签之间的差异,从而提高模型的准确性。

2.6 优化过程

为了找到最佳的模型参数 W \textcolor{red}{W} W b \textcolor{green}{b} b,我们通常使用优化算法,如梯度下降(Gradient Descent)。梯度下降的基本思想是通过计算损失函数关于参数的梯度,逐步更新参数,以最小化损失函数。参数更新的公式为:

W : = W − α ∂ L ∂ W \textcolor{red}{W := W - \alpha \frac{\partial L}{\partial W}} W:=WαWL

b : = b − α ∂ L ∂ b \textcolor{green}{b := b - \alpha \frac{\partial L}{\partial b}} b:=bαbL

其中, α \textcolor{orange}{\alpha} α 是学习率,控制每次更新的步长。

3. 实现步骤

  逻辑回归的实现步骤包括数据准备、特征缩放、模型训练、模型评估和预测等多个环节。以下将详细阐述每个步骤,并通过不同的颜色来区分关键知识点。

3.1 数据准备

在实现逻辑回归之前,首先需要准备好数据集。数据准备的步骤包括:

  • 数据收集:获取相关的数据集,数据可以来自于公开数据集、数据库或其他来源。
  • 数据清洗:处理缺失值、异常值和重复数据,以确保数据的质量。
  • 特征选择:选择与目标变量相关的特征,以提高模型的性能。

数据准备的目标是确保数据集的完整性和有效性,为后续的模型训练打下基础。

3.2 特征缩放

特征缩放是逻辑回归实现中的一个重要步骤,尤其是在特征值范围差异较大的情况下。特征缩放的主要方法包括:

  • 标准化(Standardization):将特征值转换为均值为0,标准差为1的分布。公式为:

x ′ = x − μ σ \textcolor{blue}{x' = \frac{x - \mu}{\sigma}} x=σxμ

其中, μ \mu μ 是特征的均值, σ \sigma σ 是特征的标准差。

  • 归一化(Normalization):将特征值缩放到[0, 1]的范围。公式为:

x ′ = x − min ⁡ ( x ) max ⁡ ( x ) − min ⁡ ( x ) \textcolor{blue}{x' = \frac{x - \min(x)}{\max(x) - \min(x)}} x=max(x)min(x)xmin(x)

特征缩放的目的是提高模型的收敛速度和稳定性。

3.3 模型训练

模型训练是逻辑回归实现的核心步骤,主要包括以下几个方面:

3.3.1 初始化参数

在训练开始之前,首先需要初始化模型参数 W \textcolor{red}{W} W 和偏置项 b \textcolor{green}{b} b。通常可以将它们初始化为0或小的随机值。

3.3.2 定义损失函数

使用交叉熵损失函数来衡量模型预测与实际标签之间的差距。损失函数的公式为:

L ( W , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h ( x ( i ) ) ) ] \textcolor{brown}{L(W, b) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h(x^{(i)})) + (1 - y^{(i)}) \log(1 - h(x^{(i)}))]} L(W,b)=m1i=1m[y(i)log(h(x(i)))+(1y(i))log(1h(x(i)))]

3.3.3 计算梯度

通过反向传播算法计算损失函数关于参数的梯度。梯度的计算公式为:

∂ L ∂ W = 1 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) x ( i ) \textcolor{red}{\frac{\partial L}{\partial W} = \frac{1}{m} \sum_{i=1}^{m} (h(x^{(i)}) - y^{(i)}) x^{(i)}} WL=m1i=1m(h(x(i))y(i))x(i)

∂ L ∂ b = 1 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) \textcolor{green}{\frac{\partial L}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (h(x^{(i)}) - y^{(i)})} bL=m1i=1m(h(x(i))y(i))

3.3.4 更新参数

使用梯度下降算法更新模型参数。参数更新的公式为:

W : = W − α ∂ L ∂ W \textcolor{red}{W := W - \alpha \frac{\partial L}{\partial W}} W:=WαWL

b : = b − α ∂ L ∂ b \textcolor{green}{b := b - \alpha \frac{\partial L}{\partial b}} b:=bαbL

其中, α \textcolor{orange}{\alpha} α 是学习率,控制每次更新的步长。

3.3.5 迭代训练

重复计算梯度和更新参数的过程,直到损失函数收敛或达到预设的迭代次数。

3.4 模型评估

模型训练完成后,需要对模型进行评估,以判断其性能。常用的评估指标包括:

  • 准确率(Accuracy):正确分类的样本占总样本的比例。

A c c u r a c y = T P + T N T P + T N + F P + F N \textcolor{blue}{Accuracy = \frac{TP + TN}{TP + TN + FP + FN}} Accuracy=TP+TN+FP+FNTP+TN

  • 精确率(Precision):预测为正类的样本中,实际为正类的比例。

P r e c i s i o n = T P T P + F P \textcolor{blue}{Precision = \frac{TP}{TP + FP}} Precision=TP+FPTP

  • 召回率(Recall):实际为正类的样本中,预测为正类的比例。

R e c a l l = T P T P + F N \textcolor{blue}{Recall = \frac{TP}{TP + FN}} Recall=TP+FNTP

  • F1-score:精确率和召回率的调和平均数。

F 1 = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l \textcolor{blue}{F1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}} F1=2Precision+RecallPrecisionRecall

其中, T P TP TP 是真正例, T N TN TN 是真负例, F P FP FP 是假正例, F N FN FN 是假负例。

3.5 预测

在模型训练和评估完成后,可以使用训练好的模型对新数据进行预测。预测过程包括以下步骤:

  1. 特征处理:对新数据进行相同的特征缩放处理。
  2. 计算概率:使用逻辑回归模型计算新数据的预测概率:

P ( Y = 1 ∣ X ) = σ ( W T X + b ) \textcolor{blue}{P(Y=1|X) = \sigma(W^T X + b)} P(Y=1∣X)=σ(WTX+b)

  1. 分类决策:根据设定的阈值(通常为0.5)进行分类。

4. 应用场景

  逻辑回归是一种广泛应用于分类问题的算法,尤其适合处理二分类任务。以下将详细阐述逻辑回归的几个主要应用场景,并结合示例代码进行说明。关键知识点将通过不同的颜色进行区分。

4.1 医疗领域

  在医疗领域,逻辑回归常用于预测患者是否患有某种疾病。例如,医生可以使用逻辑回归模型来判断患者是否有糖尿病的风险。

示例代码
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix# 读取数据集
data = pd.read_csv('diabetes.csv')# 特征和标签
X = data.drop('Outcome', axis=1)  # 特征
y = data['Outcome']  # 标签# 数据集划分
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)
conf_matrix = confusion_matrix(y_test, y_pred)print(f"准确率: \textcolor{blue}{accuracy:.2f}")
print(f"混淆矩阵:\n\textcolor{green}{conf_matrix}")

  在这个示例中,我们使用了一个糖尿病数据集,通过逻辑回归模型预测患者是否患有糖尿病。模型的准确率和混淆矩阵可以帮助我们评估模型的性能。

4.2 金融领域

  在金融领域,逻辑回归被广泛应用于信用评分,帮助银行判断借款人是否可能违约。通过分析借款人的历史数据,银行可以使用逻辑回归模型来预测其信用风险。

示例代码
# 假设我们有一个信用评分数据集
credit_data = pd.read_csv('credit_data.csv')# 特征和标签
X_credit = credit_data.drop('Default', axis=1)  # 特征
y_credit = credit_data['Default']  # 标签# 数据集划分
X_train_credit, X_test_credit, y_train_credit, y_test_credit = train_test_split(X_credit, y_credit, test_size=0.3, random_state=42)# 初始化逻辑回归模型
model_credit = LogisticRegression()# 训练模型
model_credit.fit(X_train_credit, y_train_credit)# 预测
y_pred_credit = model_credit.predict(X_test_credit)# 评估模型
accuracy_credit = accuracy_score(y_test_credit, y_pred_credit)
conf_matrix_credit = confusion_matrix(y_test_credit, y_pred_credit)print(f"信用评分模型准确率: \textcolor{blue}{accuracy_credit:.2f}")
print(f"信用评分混淆矩阵:\n\textcolor{green}{conf_matrix_credit}")

  在这个示例中,我们使用了一个信用评分数据集,通过逻辑回归模型预测借款人是否会违约。模型的准确率和混淆矩阵同样可以帮助我们评估模型的性能。

4.3 市场营销

  在市场营销中,逻辑回归可以用于客户流失预测,帮助企业识别可能流失的客户。通过分析客户的购买行为和反馈,企业可以采取相应的措施来挽回客户。

示例代码
# 假设我们有一个客户流失数据集
churn_data = pd.read_csv('churn_data.csv')# 特征和标签
X_churn = churn_data.drop('Churn', axis=1)  # 特征
y_churn = churn_data['Churn']  # 标签# 数据集划分
X_train_churn, X_test_churn, y_train_churn, y_test_churn = train_test_split(X_churn, y_churn, test_size=0.25, random_state=42)# 初始化逻辑回归模型
model_churn = LogisticRegression()# 训练模型
model_churn.fit(X_train_churn, y_train_churn)# 预测
y_pred_churn = model_churn.predict(X_test_churn)# 评估模型
accuracy_churn = accuracy_score(y_test_churn, y_pred_churn)
conf_matrix_churn = confusion_matrix(y_test_churn, y_pred_churn)print(f"客户流失预测模型准确率: \textcolor{blue}{accuracy_churn:.2f}")
print(f"客户流失预测混淆矩阵:\n\textcolor{green}{conf_matrix_churn}")

  在这个示例中,我们使用了一个客户流失数据集,通过逻辑回归模型预测客户是否会流失。模型的准确率和混淆矩阵可以帮助企业评估客户流失的风险。

总结

  逻辑回归作为一种经典的分类算法,以其简单性和有效性在机器学习领域中占据了重要地位。通过对输入特征的线性组合,逻辑回归能够预测事件发生的概率,并利用Sigmoid函数将这一概率映射到0和1之间。其核心原理包括线性组合、概率预测、决策边界的设定以及交叉熵损失函数的优化。逻辑回归不仅易于实现和解释,还能为许多实际应用提供可靠的解决方案,如医疗诊断、金融风险评估和市场营销分析等。掌握逻辑回归的基本原理和实现步骤,不仅为初学者打下了坚实的基础,也为深入探索更复杂的机器学习模型提供了必要的知识储备。通过对逻辑回归的学习,读者能够更好地理解分类问题的本质,并在实际项目中灵活应用这一强大的工具。


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

相关文章:

深入了解逻辑回归:机器学习中的经典算法

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

软件测试基础十三(python 函数)

函数 1. 函数的意义 代码复用 提高效率:Python中的函数允许将一段可重复使用的代码封装起来。例如,在一个数据分析项目中,可能需要多次计算一组数据的平均值。可以将计算平均值的代码定义为一个函数: def calculate_average(nu…...

计算机网络——HTTP篇

基础篇 IOS七层网络模型 TCP/IP四层模型? 应⽤层:位于传输层之上,主要提供两个终端设备上的应⽤程序之间的通信,它定义了信息交换的格式,消息会交给下⼀层传输层来传输。 传输层的主要任务就是负责向两台设备进程之间…...

信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)

1 编制目的 2 系统运行维护 2.1 系统运维内容 2.2 日常运行维护方案 2.2.1 日常巡检 2.2.2 状态监控 2.2.3 系统优化 2.2.4 软件系统问题处理及升级 2.2.5 系统数据库管理维护 2.2.6 灾难恢复 2.3 应急运行维护方案 2.3.1 启动应急流程 2.3.2 成立应急小组 2.3.3 应急处理过程 …...

自动化工具 Gulp

自动化工具 gulp 摘要 概念:gulp用于自动化开发流程。 理解:我们只需要编写任务,然后gulp帮我们执行 核心概念: 任务:通过定义不同的任务来组织你的构建流程。 管道:通过管道方式将文件从一个插件传递…...

css实现div被图片撑开

固定好盒子的宽度&#xff0c;高度随传过来的图片大小决定 <div class"tab-con"> <img:src"concertInfo.detail"alt""> </div>.tab-con {margin-bottom: 20px;width: 700px;img {width: 700px;height: auto;object-fit: cont…...

Power Pivot、Power BI 和 SQL Server Analysis Services 的公式语言:DAX(数据分析表达式)

DAX&#xff08;Data Analysis Expressions&#xff09;是一种用于 Power Pivot、Power BI 和 SQL Server Analysis Services 的公式语言&#xff0c;旨在帮助用户进行数据建模和复杂计算。DAX 的设计初衷是使数据分析变得简单而高效&#xff0c;特别是在处理数据模型中的表关系…...

大模型应用编排工具Dify二开之工具和模型页面改造

1.前言 简要介绍下 dify&#xff1a; ​ 一款可以对接市面上主流大模型的任务编排工具&#xff0c;可以通过拖拽形式进行编排形成解决某些业务场景的大模型应用。 背景信息&#xff1a; ​ 环境&#xff1a;dify-0.8.3、docker-21 ​ 最近笔者在做 dify的私有化部署和二次…...

Pytorch用BERT对CoLA、新闻组文本数据集自然语言处理NLP:主题分类建模微调可视化分析...

原文链接&#xff1a;https://tecdat.cn/?p38181 自然语言处理&#xff08;NLP&#xff09;领域在近年来发展迅猛&#xff0c;尤其是预训练模型的出现带来了重大变革。其中&#xff0c;BERT 模型凭借其卓越性能备受瞩目。然而&#xff0c;对于许多研究者而言&#xff0c;如何高…...

LightGBM-GPU不能装在WSL,能装在windows上

这是一篇经验总结文章&#xff0c;注重思路&#xff0c;忽略细节。 1.起因 用多个机器学习方法训练模型&#xff0c;比较性能&#xff0c;发现Light GBM方法获得的性能明显更高&#xff0c;但问题是在CPU上训练的速度特别特别慢&#xff0c;需要用GPU训练。 2.开始装LightGB…...

工业相机常用功能之白平衡及C++代码分享

目录 1、白平衡的概念解析 2、相机白平衡参数及操作 2.1 相机白平衡参数 2.2 自动白平衡操作 2.3 手动白平衡操作流程 3、C++ 代码从XML读取参数及设置相机参数 3.1 读取XML 3.2 C++代码,从XML读取参数 3.3 给相机设置参数 1、白平衡的概念解析 白平衡(White Balance)…...

Foundry 单元测试

安装 Foundry 如果你还没有安装 Foundry&#xff0c;请按照此处的说明进行操作&#xff1a;Foundry 安装 Foundry Hello World 只需运行以下命令&#xff0c;它将为你设置环境&#xff0c;创建测试并运行它们。&#xff08;当然&#xff0c;这假设你已经安装了 Foundry&…...

idea database连接数据库后看不到表解决方法、格式化sql快捷键

最下面那个勾选上就可以了 或 格式化sql快捷键&#xff1a; 先选中&#xff0c; 使用快捷键格式化 SQL&#xff1a; Windows/Linux: Ctrl Alt L macOS: Cmd Alt L...

【数学二】线性代数-向量-向量组的秩、矩阵得秩

考试要求 1、理解 n n n维向量、向量的线性组合与线性表示的概念. 2、理解向量组线性相关、线性无关的概念,掌握向量组线性相关、线性无关的有关性质及判别法. 3、了解向量组的极大线性无关组和向量组的秩的概念,会求向量组的极大线性无关组及秩. 4、了解向量组等价的概念,…...

ABAP开发-内存管理

系列文章目录 文章目录 系列文章目录前言一、概述二、程序间调用三、外部会话和内部会话四、SAP内存与ABAP内存五、实例总结 前言 一、概述 内存是程序之间为了传递数据而使用的共享存储空间&#xff0c;在每个程序里使用的内存有SAP内存和ABAP内存 SAP内存分类 SAP内存 主会…...

【Ajax】跨域

文章目录 1 同源策略1.1 index.html1.2 server.js 2 如何解决跨域2.1 JSONP2.1.1 JSONP 原理2.1.2 JSONP 实践2.1.3 jQuery 中的 JSONP 2.2 CORS2.2.1 CORS实践 3 server.js 1 同源策略 同源策略(Same-Origin Policy)最早由 Netscape 公司提出&#xff0c;是浏览器的一种安全策…...

yii 常用一些调用

yii 常用一些调用 (增加中) 调用YII框架中 jquery&#xff1a;Yii::app()->clientScript->registerCoreScript(‘jquery’); framework/web/js/source的js,其中registerCoreScript key调用的文件在framework/web/js/packages.php列表中可以查看 在view中得到当前contro…...

网页版五子棋——用户模块(服务器开发)

前一篇文章&#xff1a;网页版五子棋—— WebSocket 协议-CSDN博客 目录 前言 一、编写数据库代码 1.数据库设计 2.配置 MyBatis 3.创建实体类 4.创建 UserMapper 二、前后端交互接口 1.登录接口 2.注册接口 3.获取用户信息 三、服务器开发 1.代码编写 2.测试后端…...

以RK3568为例,ARM核心板如何实现NTP精准时间同步?

背景 网络时间协议NTP&#xff08;Network TimeProtocol&#xff09;是用于互联网中时间同步的标准互联网协议&#xff0c;可以把计算机的时间同步到某些时间标准。NTP对于我们产品来说有什么用呢&#xff0c;简单的讲&#xff0c;当你的设备时间不准确了&#xff0c;你可以接…...

Twitter(X)2024最新注册教程

Twitter 现名为X&#xff0c;因为图标是一只小鸟的形象&#xff0c;大家也叫它小蓝鸟&#xff08;埃隆马斯克于 2023 年对该平台进行了品牌重塑&#xff09;&#xff0c;目前仍然是全球最受欢迎的社交媒体和微博平台之一&#xff0c;全球活跃用户量大概在4.5亿。尤其是欧美国家…...

10.桥接模式设计思想

10.桥接模式设计思想 目录介绍 01.桥接模式基础 1.1 桥接模式由来1.2 桥接模式定义1.3 桥接模式场景1.4 桥接模式思考1.5 解决的问题 02.桥接模式实现 2.1 罗列一个场景2.2 桥接结构2.3 桥接基本实现2.4 有哪些注意点 03.桥接实例演示 3.1 需求分析3.2 代码案例实现3.3 是否可…...

Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized

这里是Themberfue 在上一节的最后&#xff0c;我们讨论两个线程同时对一个变量累加所产生的现象 在这一节中&#xff0c;我们将更加详细地解释这个现象背后发生的原因以及该如何解决这样类似的现象 线程安全问题 public class Demo15 {private static int count 0;public …...

(已解决)Dependency “ ” not found 细谈

剖析原因&#xff1a;依赖在pom文件中引用后&#xff0c;然后ReLoad&#xff0c;此依赖会在你配置的本地仓库里面找&#xff0c;并下载下来&#xff0c;他报not found就是没有找到。 本地仓库的位置&#xff1a; 进一步深究&#xff1a;在本地仓库找的时候&#xff0c;他又会…...

网络编程、UDP、TCP、三次握手、四次挥手

一、初识网络编程 网络编程的概念&#xff1a;在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行的数据传输。 应用场景&#xff1a;即时通信、网游对战、金融证券、国际贸易、邮件等等。 不管是什么场景&#xff0c;都是计算机和计算机之间通过网络进行…...

程序员的生活周刊 #7:耐克总裁被裁记

0. 庙宇 这张图来自 Tianshu Liu&#xff0c; 被树木环绕的宝塔庙宇 1. 耐克总裁 耐克最近的总裁 John Donahoe 干了 5 年&#xff0c;终于被裁掉了。 这位总裁即不了解球鞋文化&#xff0c;也没有零售经验&#xff0c;但不懂事的董事会还是聘用它&#xff0c;寄托把耐克从运…...

sparkSQL的UDF,最常用的regeister方式自定义函数和udf注册方式定义UDF函数 (详细讲解)

- UDF&#xff1a;一对一的函数【User Defined Functions】 - substr、split、concat、instr、length、from_unixtime - UDAF&#xff1a;多对一的函数【User Defined Aggregation Functions】 聚合函数 - count、sum、max、min、avg、collect_set/list - UDTF&#xff1a;…...

【Ubuntu20】VSCode Python代码规范工具配置 Pylint + Black + MyPy + isort

​ 常用工具&#xff1a; 在 Ubuntu20 下&#xff0c;有以下常见的 Python 代码工具&#xff1a; 静态分析工具&#xff1a; Pylint 和 Flake8 功能范围&#xff1a;Pylint功能非常强大&#xff0c;能够检查代码质量、潜在错误、代码风格、复杂度等多个方面, 并生成详细的报…...

游戏提示错误:xinput1_3.dll缺失?四种修复错误的xinput1_3.dll文件

在计算机的运行过程中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;其中与“xinput1_3.dll”相关的问题也并不罕见。“xinput1_3.dll”是一个在许多游戏和多媒体应用程序运行过程中可能会用到的动态链接库文件。当我们启动某些游戏时&#xff0c;可能会突然弹出一个错…...

YOLOv11融合IncepitonNeXt[CVPR2024]及相关改进思路

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/abs/2303.16900 代码链接&#xff1a;https://github.com/sail-sg/inceptionnext 论文速览&#xff1a;受 ViT 长距离建模能力的启发&#xff0c;大核卷积…...

[Web安全 网络安全]-学习文章汇总导航(持续更新中)

文章目录&#xff1a; 一&#xff1a;学习路线资源 1.路线 2.资源 二&#xff1a;工具 三&#xff1a;学习笔记 1.基础阶段 2.进阶阶段 四&#xff1a;好的参考 五&#xff1a;靶场 博主对网络安全很感兴趣&#xff0c;但是不知道如何取学习&#xff0c;自己一步一步…...