逻辑回归算法深入浅出

序言

逻辑回归是一个有监督机器学习算法用于分类任务其中目标是预测实例是否属于给定类的概率。逻辑回归是一种分析两个数据因素之间关系的统计算法。

概览

我们将探讨了逻辑回归概念、基本原理,它的类型和实现。

  • 什么是逻辑回归
  • 逻辑函数 - Sigmoid函数
  • 逻辑回归类型
  • 逻辑回归假设
  • 逻辑回归工作原理
  • 逻辑回归案例代码
  • 逻辑回归阈值设置中的精度-召回率权衡
  • 逻辑回归模型评价指标?
  • 线性回归与逻辑回归的差异
  • 逻辑回归优点和缺点
  • 逻辑回归常见问题

什么是逻辑回归?

  • 逻辑回归用于二元分类,我们使用sigmoid函数,简称S型函数,它将输入作为自变量并产生 0 0 0 1 1 1之间的概率值。

  • 例如,我们有两个类:类 0 0 0和类 1 1 1

    • 如果输入的逻辑函数的值大于0.5(阈值),则它属于类 1 1 1,否则它属于类 0 0 0
    • 它被称为回归,因为它是线性回归但主要用于分类问题。
  • 关键点

    • 逻辑回归预测分类因变量的输出。因此,结果必须是绝对值或离散值。
    • 它可以是是或否、 0 0 0 1 1 1、真或假等。但不是给出精确值 0 0 0 1 1 1,而是给出介于 0 0 0 1 1 1之间的概率值。
    • 在逻辑回归中,我们不是拟合回归线,而是拟合“S”形逻辑函数,它预测两个最大值( 0 0 0 1 1 1)。

逻辑函数 - Sigmoid函数

  • Sigmoid函数是用于将预测值映射到概率的数学函数。
  • 它将任何实值映射到 0 0 0 1 1 1范围内的另一个值。逻辑回归的值必须在 0 0 0 1 1 1之间,不能超过这个限制,因此它形成了一条类似“S”形的曲线。
  • S形曲线称为S形函数或逻辑函数。
  • 在逻辑回归中,我们使用阈值的概念,它定义了 0 0 0 1 1 1的概率。例如,高于阈值的值趋向于 1 1 1,低于阈值的值趋向于 0 0 0

逻辑回归类型

根据分类,逻辑回归可分为三种类型:

  • 二项式(Binomial)
    • 在二项逻辑回归中,因变量只有两种可能的类型,如 0 0 0 1 1 1,通过或失败等。
  • 多项式(Multinormal)
    • 在多项逻辑回归中,因变量可以有3种或更多可能的无序类型,如“猫”、“狗”或“羊”等。
  • 序数(Oridnal)
    • 在有序逻辑回归中,可以有3个或更多可能的有序类型的因变量,如“低”、“中”或“高”。

逻辑回归假设

我们将探讨逻辑回归的假设,因为理解这些假设对于确保我们使用模型的适当应用非常重要。假设包括:

  • 独立观察
    • 每个观察都独立于其他观察。这意味着任何输入变量之间都没有相关性。
  • 二元因变量
    • 它假设因变量必须是二元或二分的,这意味着它只能取两个值。对于两个以上的类别,使用softmax函数。
  • 自变量与对数比值之间的线性关系
    • 自变量与因变量的对数比值之间的关系应该是线性的。
  • 没有离群值
    • 数据集中应该没有离群值。
  • 大样本量
    • 样本量足够大

逻辑回归中涉及的术语

以下是逻辑回归中涉及的一些常见术语:

  • 自变量(independent variable)
    • 应用于因变量预测的输入特征或预测因子。
  • 因变量(dependent variable)
    • 我们试图预测的逻辑回归模型中的目标变量。
  • 逻辑函数(logistic function)
    • 用于表示自变量和因变量之间关系的公式。逻辑函数将输入变量转换为0和1之间的概率值,表示因变量为1或0的可能性。
  • 赔率(odds)
    • 它是某事发生与某事未发生的比率。它不同于概率,因为概率是某件事的发生与可能发生的每件事的比率。
  • 对数赔率(log-odds)
    • log-odds,也称为logit函数,是赔率的自然对数。在逻辑回归中,因变量的对数比值被建模为自变量和截距的线性组合。
  • 系数(coefficient)
    • 逻辑回归模型的估计参数显示了自变量和因变量之间的相互关系。
  • 截距(intercept)
    • 逻辑回归模型中的常数项,表示所有自变量都等于零时的对数几率。
  • 最大似然估计(maximum likelihood estimation,MLE)
    • 用于估计逻辑回归模型的系数的方法,该方法使观察给定模型的数据的可能性最大化。

逻辑回归工作原理

逻辑回归模型将线性回归函数使用Sigmoid函数将连续值输出转换为分类值输出,该函数将输入的任何实值独立变量集映射为 0 0 0 1 1 1之间的值。此函数称为逻辑函数。

  • 假设独立输入特征为: X = [ x 11 … x 1 m x 21 … x 2 m ⋮ ⋱ ⋮ x n 1 … x n m ] \boldsymbol{X} = \left[\begin{matrix} x_{11}\quad\dots\quad x_{1m}\\ x_{21}\quad\dots\quad x_{2m}\\ \vdots\quad\ddots\quad \vdots\\ x_{n1}\quad\dots\quad x_{nm} \end{matrix}\right] X= x11x1mx21x2mxn1xnm

    • 并且因变量是仅具有二进制值(即 0 0 0 1 1 1)的 y y y y = { 0 如果是类 1 1 如果是类 2 y = \begin{cases}\begin{array}{l} 0\quad 如果是类1\\1\quad 如果是类2\end{array}\end{cases} y={0如果是类11如果是类2
    • 然后,将多线性函数应用于输入变量 X \boldsymbol{X} X z = ∑ i = 1 m w i x i + b z=\sum_{i=1}^m w_ix_i+b z=i=1mwixi+b
    • 参数说明
      • 其中, x i x_i xi X \boldsymbol{X} X的第 i i i观测值
      • w i w_i wi是权重或者系数
      • b b b是偏差项,也称为截距
    • 简单地说,这可以表示为权重和偏差的点积,即: z = w ⋅ X + b z=w\cdot\boldsymbol{X}+b z=wX+b。我们现在所讨论的是线性回归。
  • Sigmoid函数(S形函数)

    • 现在我们使用S形函数其中输入将是 z z z,并且我们找到 0 0 0 1 1 1之间的概率,即预测的 y y y
      在这里插入图片描述

    • 如上所示,图形Sigmoid函数将连续变量数据转换为概率即在 0 0 0 1 1 1之间。

    • 函数说明:

      • σ ( z ) \sigma(z) σ(z)趋向于 1 1 1时, z z z趋向于正无穷
      • σ ( z ) \sigma(z) σ(z)趋向于 0 0 0时, z z z趋向于负无穷
      • σ ( z ) \sigma(z) σ(z)始终在 0 0 0 1 1 1之间有界
    • 其中,成为一个类的概率可以测量为:$ \begin{cases}\begin{array}{l} P(y=1)=\sigma(z)\\ P(y=0)=1-\sigma(z) \end{array}\end{cases}$

  • 逻辑回归方程

    • 赔率是某事发生与某事未发生的比率。它不同于概率,因为概率是某件事的发生与可能发生的每件事的比率。所以赔率的是: p ( x ) 1 − p ( x ) = e z \frac{p(x)}{1-p(x)} = e^z 1p(x)p(x)=ez
      在赔率上应用自然对数。则赔率的自然对数将为:
      { log ⁡ [ p ( x ) 1 − p ( x ) ] = z log ⁡ [ p ( x ) 1 − p ( x ) ] = z = w ⋅ X + b p ( x ) 1 − p ( x ) = e w ⋅ X + b p ( x ) = e w ⋅ X + b ⋅ ( 1 − p ( x ) ) p ( x ) = e w ⋅ X + b − e w ⋅ X + b ⋅ p ( x ) p ( x ) + e w ⋅ X + b ⋅ p ( x ) = e w ⋅ X + b p ( x ) ( 1 + e w ⋅ X + b ) = e w ⋅ X + b p ( x ) = e w ⋅ X + b 1 + e w ⋅ X + b \begin{cases}\begin{aligned} \log\left[ \frac{p(x)}{1-p(x)}\right] &= z \\ \log\left[ \frac{p(x)}{1-p(x)}\right] &= z = w\cdot\boldsymbol{X}+b \\ \frac{p(x)}{1-p(x)} &= e^{w\cdot\boldsymbol{X}+b} \\ p(x) &= e^{w\cdot\boldsymbol{X}+b} \cdot (1-p(x)) \\ p(x) &= e^{w\cdot\boldsymbol{X}+b} - e^{w\cdot\boldsymbol{X}+b} \cdot p(x) \\ p(x) + e^{w\cdot\boldsymbol{X}+b} \cdot p(x) &= e^{w\cdot\boldsymbol{X}+b} \\ p(x)(1+e^{w\cdot\boldsymbol{X}+b}) &= e^{w\cdot\boldsymbol{X}+b} \\ p(x) &= \frac{e^{w\cdot\boldsymbol{X}+b}}{1+e^{w\cdot\boldsymbol{X}+b}} \end{aligned}\end{cases} log[1p(x)p(x)]log[1p(x)p(x)]1p(x)p(x)p(x)p(x)p(x)+ewX+bp(x)p(x)(1+ewX+b)p(x)=z=z=wX+b=ewX+b=ewX+b(1p(x))=ewX+bewX+bp(x)=ewX+b=ewX+b=1+ewX+bewX+b
    • 那么最终的逻辑回归方程为: p ( X ; b , w ) = e w ⋅ X + b 1 + e w ⋅ X + b = 1 1 + e − ( w ⋅ X + b ) p(\boldsymbol{X};b,w)=\frac{e^{w\cdot\boldsymbol{X}+b}}{1+e^{w\cdot\boldsymbol{X}+b}} = \frac{1}{ 1+e^{-(w\cdot\boldsymbol{X}+b)} } p(X;b,w)=1+ewX+bewX+b=1+e(wX+b)1
  • 逻辑回归的似然函数

    • 预测的概率为:
      • y = 1 y=1 y=1时,预测概率为: p ( X ; b , w ) = p ( x ) p(\boldsymbol{X};b,w)=p(x) p(X;b,w)=p(x)
      • y = 0 y=0 y=0时,预测概率将是: 1 − p ( X ; b , w ) = 1 − p ( x ) 1-p(\boldsymbol{X};b,w)=1-p(x) 1p(X;b,w)=1p(x)
      • L ( b , w ) = ∏ i = 1 n p ( x i ) y i ( 1 − p ( x i ) ) 1 − y i L(b,w)=\prod_{i=1}^n p(x_i)^{y_i}(1-p(x_i))^{1-y_i} L(b,w)=i=1np(xi)yi(1p(xi))1yi
      • 两边取自然对数,得:
        { log ⁡ ( L ( b , w ) ) = ∑ i = i n y i log ⁡ p ( x i ) + ( 1 − y i ) log ⁡ ( 1 − p ( x i ) ) = ∑ i = 1 n y i log ⁡ p ( x i ) + log ⁡ ( 1 − p ( x i ) ) − y i log ⁡ ( 1 − p ( x i ) ) = ∑ i = 1 n log ⁡ ( 1 − p ( x i ) ) + ∑ i = 1 n y i log ⁡ p ( x i ) 1 − p ( x i ) = ∑ i = 1 n − log ⁡ 1 − e − ( w ⋅ x i + b ) + ∑ i = 1 n y i ( w ⋅ x i + b ) = ∑ i = 1 n − log ⁡ 1 + e w ⋅ x i + b + ∑ i = 1 n y i ( w ⋅ x i + b ) \begin{cases}\begin{aligned} \log(L(b,w)) &=\sum\limits_{i=i}^n y_i\log p(x_i)+(1-y_i) \log(1-p(x_i))\\ &= \sum\limits_{i=1}^n y_i \log p(x_i) + \log(1-p(x_i)) - y_i \log(1-p(x_i))\\ &= \sum\limits_{i=1}^n \log(1-p(x_i)) + \sum\limits_{i=1}^n y_i \log \frac{p(x_i)}{1-p(x_i)}\\ &= \sum\limits_{i=1}^n -\log1-e^{-(w\cdot x_i+b)} + \sum\limits_{i=1}^n y_i(w\cdot x_i+b)\\ &= \sum\limits_{i=1}^n -\log1+e^{w\cdot x_i+b} + \sum\limits_{i=1}^n y_i(w\cdot x_i+b) \end{aligned}\end{cases} log(L(b,w))=i=inyilogp(xi)+(1yi)log(1p(xi))=i=1nyilogp(xi)+log(1p(xi))yilog(1p(xi))=i=1nlog(1p(xi))+i=1nyilog1p(xi)p(xi)=i=1nlog1e(wxi+b)+i=1nyi(wxi+b)=i=1nlog1+ewxi+b+i=1nyi(wxi+b)
  • 对数似然函数的梯度

    • 为了找到最大似然估计,我们对上式进行微分:
      { ∂ J ( L ( b , w ) ) ∂ w j = − ∑ i = 1 n 1 1 + e w ⋅ x i + b e w ⋅ x i + b x i j + ∑ i = 1 n y i x i j = − ∑ i = 1 n p ( x i ; b , w ) x i j + ∑ i = 1 n y i x i j = ∑ i = 1 n ( y i − p ( x i ; b , w ) ) x i j \begin{cases}\begin{aligned} \frac{\partial J(L(b,w))}{\partial w_j} &=-\sum\limits_{i=1}^n \frac{1}{1+e^{w\cdot x_i+b}} e^{w\cdot x_i+b} x_{ij}+\sum\limits_{i=1}^n y_i x_{ij}\\ &= -\sum\limits_{i=1}^n p(x_i;b,w)x_{ij}+\sum\limits_{i=1}^n y_i x_{ij}\\ &= \sum\limits_{i=1}^n (y_i - p(x_i;b,w))x_{ij} \end{aligned}\end{cases} wjJ(L(b,w))=i=1n1+ewxi+b1ewxi+bxij+i=1nyixij=i=1np(xi;b,w)xij+i=1nyixij=i=1n(yip(xi;b,w))xij

逻辑回归案例代码

二项逻辑回归

  • 目标变量只能有2种可能的类型:“0”或“1”,可以表示“赢”对“输”,“通过”对“失败”,“死”对“活”等,在这种情况下,使用S形函数,这在上面已经讨论过。
  • 根据模型的要求,导入必要的库。下面代码展示了如何使用乳腺癌数据集来实现用于分类的逻辑回归模型。
# coding: utf-8

# 导入乳腺癌数据集加载函数
from sklearn.datasets import load_breast_cancer
# 导入逻辑回归模型
from sklearn.linear_model import LogisticRegression
# 导入训练测试集划分函数
from sklearn.model_selection import train_test_split
# 导入准确率计算函数
from sklearn.metrics import accuracy_score

# load the breast cancer dataset
X, y = load_breast_cancer(return_X_y=True)

# split the train and test dataset
X_train, X_test,\
    y_train, y_test = train_test_split(X, y,
                                       test_size=0.20,
                                       random_state=23)
# LogisticRegression
clf = LogisticRegression(random_state=0, max_iter=1000)
clf.fit(X_train, y_train)

# Prediction
y_pred = clf.predict(X_test)

acc = accuracy_score(y_test, y_pred)
print("Logistic Regression model accuracy (in %):", acc*100)

# 输出(略)

多项逻辑回归

  • 目标变量可以具有3种或更多种未排序的可能类型(即类型没有定量意义),如“疾病A” vs “疾病B” vs “疾病C”。
  • 在这种情况下,使用softmax函数代替sigmoid函数。SoftMax函数对于K类,将为:
    softmax ( z i ) = e z i ∑ j = 1 K e z j \text{softmax}(z_i)=\frac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}} softmax(zi)=j=1Kezjezi
  • 这里,K表示向量 z z z中元素的数量, i i i j j j对向量中的所有元素进行迭代。
  • 则C类的概率为: P ( Y = c ∣ X ⃗ = x ) = e w c ⋅ x + b c ∑ k = 1 K e w k ⋅ x + b k P(Y=c\mid \vec{X}=x)=\frac{e^{w_c\cdot x+b_c}}{\sum_{k=1}^K e^{w_k\cdot x+b_k}} P(Y=cX =x)=k=1Kewkx+bkewcx+bc
  • 在多项逻辑回归中,输出变量可以有两个以上可能的离散输出。考虑Digit数据集
# coding: utf-8

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

# load the digit dataset
digits = load_digits()

# defining feature matrix(X) and response vector(y)
X = digits.data
y = digits.target

# splitting X and y into training and testing sets
X_train, X_test,\
    y_train, y_test = train_test_split(X, y,
                                       test_size=0.4,
                                       random_state=1)

# create logistic regression object
reg = LogisticRegression(max_iter=1000)

# train the model using the training sets
reg.fit(X_train, y_train)

# making predictions on the testing set
y_pred = reg.predict(X_test)

# comparing actual response values (y_test)
# with predicted response values (y_pred)
print("Logistic Regression model accuracy(in %):",
      accuracy_score(y_test, y_pred)*100)

# 输出(略)

逻辑回归阈值设置中的精度-召回率权衡

只有当决策阈值被引入时,逻辑回归才成为一种分类技术。阈值的设置是逻辑回归的一个非常重要的方面,并且依赖于分类问题本身。

阈值的决定主要受以下值的影响:精确度和召回率。理想情况下,我们希望精确度和召回率都为1,但这种情况很少发生。

在的情况下精确度-召回率权衡,我们使用以下参数来决定阈值:

  • 低精度/高召回率
    • 在我们想要减少假阴性的数量而不一定减少假阳性的数量的应用中,我们选择具有低精确值或高召回值的决策值。
    • 例如,在癌症诊断应用程序中,我们不希望任何受影响的患者被归类为未受影响,而不注意患者是否被错误地诊断为癌症。这是因为癌症的缺失可以通过进一步的医学疾病来检测,但是疾病的存在不能在已经被拒绝的候选者中检测到。
  • 高精度/低召回率
    • 在我们想要减少假阳性的数量而不一定减少假阴性的数量的应用中,我们选择具有高精确值或低召回值的决策值。
    • 例如,如果我们对客户进行分类,无论他们对个性化广告的反应是积极的还是消极的,我们都希望绝对确保客户对广告的反应是积极的,否则,消极的反应可能会导致客户潜在销售的损失。

逻辑回归模型评价指标

我们可以使用以下指标评估逻辑回归模型:

  • 准确性
    • 准确性提供正确分类实例的比例。
    • 计算公式: accuracy = T P + T N T P + T N + F P + F N \text{accuracy} = \frac{TP + TN}{TP + TN + FP + FN} accuracy=TP+TN+FP+FNTP+TN
  • 精确度
    • 精确侧重于正面预测的准确性。
    • 计算公式: precision = T P T P + F P \text{precision} = \frac{TP}{TP + FP} precision=TP+FPTP
  • 回忆(灵敏度或真阳性率)
    • 召回测量所有实际阳性实例中正确预测的阳性实例的比例。
    • 计算公式: recall = T P T P + F N \text{recall} = \frac{TP}{TP + FN} recall=TP+FNTP
  • F1得分
    • F1成绩是精确度和召回率的调和平均值。
    • 计算公式: F1 score = 2 × precision × recall precision + recall \text{F1 score} = 2\times \frac{\text{precision}\times \text{recall}}{\text{precision}+\text{recall}} F1 score=2×precision+recallprecision×recall
  • 受试者工作特征曲线下面积(AUC-ROC)
    • ROC曲线绘制了不同阈值下的真阳性率和假阳性率。AUC-ROC测量此曲线下面积,提供模型在不同分类阈值下的性能的综合测量。
    • 计算公式: AUC-ROC = 1 2 ∑ i = 1 n ( F P R i − F P R i − 1 ) + 1 2 F P R n \text{AUC-ROC} = \frac{1}{2}\sum\limits_{i=1}^{n}(FPR_i - FPR_{i-1}) + \frac{1}{2}FPR_n AUC-ROC=21i=1n(FPRiFPRi1)+21FPRn
  • 精确度-召回率曲线下面积(AUC-PR)
    • 与AUC-ROC相似,AUC-PR测量精确度-召回率曲线下的面积,提供模型在不同精确度-召回率权衡中的性能摘要。
    • 计算公式: AUC-PR = 1 2 ∑ i = 1 n ( recall i − recall i − 1 ) + 1 2 recall n \text{AUC-PR} = \frac{1}{2}\sum\limits_{i=1}^{n}(\text{recall}_i - \text{recall}_{i-1}) + \frac{1}{2}\text{recall}_n AUC-PR=21i=1n(recallirecalli1)+21recalln

线性回归与逻辑回归的差异

线性回归和逻辑回归之间的区别在于,线性回归输出是连续值,可以是任何值,而逻辑回归预测实例是否属于给定类的概率。

线性回归逻辑回归
线性回归用于使用一组给定的自变量来预测连续因变量逻辑回归用于使用一组给定的自变量来预测分类因变量
线性回归用于解决回归问题它用于解决分类问题
预测连续变量的值预测分类变量的值
找最佳拟合线找S曲线
精度估计采用最小二乘估计方法精度估计采用最大似然估计法
输出的必须是连续的值,如价格、年龄等输出必须是分类值,如0或1、是或否等
它需要因变量和自变量之间的线性关系它不需要线性关系
自变量之间可能存在共线性自变量之间应该很少或没有共线性

逻辑回归优点和缺点

逻辑回归优点

  • 解释性强
    • 逻辑回归模型的结果易于解释,因为模型的输出是概率值,可以直接反映某个样本属于某个类别的可能性。此外,模型中的特征权重也提供了关于哪些因素对于分类结果影响更大的直观信息。
  • 计算效率高
    • 逻辑回归的计算成本相对较低,训练速度快,适用于处理大规模数据集。
  • 适用于线性关系
    • 当特征与目标变量之间存在线性关系时,逻辑回归能够很好地捕捉这种关系,并给出准确的预测结果。
  • 易于实现
    • 逻辑回归的实现相对简单,许多编程语言和数据分析工具都提供了相应的函数或库,方便用户进行建模和分析。

逻辑回归缺点

  • 对非线性问题处理不佳
    • 当特征与目标变量之间存在复杂的非线性关系时,逻辑回归可能无法准确地拟合数据,导致预测结果不准确。
  • 对多重共线性敏感
    • 如果特征之间存在高度相关性(即多重共线性),逻辑回归的性能可能会受到严重影响。
  • 对异常值和缺失值敏感
    • 逻辑回归对异常值和缺失值较为敏感,这可能导致模型的不稳定或预测偏差。
  • 分类能力有限
    • 逻辑回归只能处理二分类问题,对于多分类问题需要进行额外的处理,如使用多个逻辑回归模型或进行特征扩展等。

总结

逻辑回归是一种强大且易于理解的分类算法。它通过计算特征与目标变量之间的线性关系,并应用逻辑函数来预测分类概率。其优点包括解释性强、计算效率高和适用于线性关系。然而,它对于非线性关系和多重共线性敏感,且主要适用于二分类问题。在实际应用中,逻辑回归是一个常用的选择,但需要根据数据特性和需求来评估其适用性。

逻辑回归常见问题

  1. 机器学习中的逻辑回归是什么?
    逻辑回归是一种用于开发具有二元因变量(即二元)的机器学习模型的统计方法。逻辑回归是一种统计技术,用于描述数据以及一个因变量与一个或多个自变量之间的关系。

  2. 逻辑回归的三种类型是什么?
    逻辑回归分为三种类型:二元、多元和有序。他们在执行和理论上都有所不同。二元回归涉及两种可能的结果:是或否。当有三个或更多值时,使用多项逻辑回归。

  3. 为什么逻辑回归用于分类问题?
    逻辑回归更容易实现、解释和训练。它对未知记录的分类速度非常快。当数据集是线性可分时,它表现良好。模型系数可以解释为特征重要性的指标。

  4. 逻辑回归与线性回归的区别是什么?
    线性回归用于预测连续结果,而逻辑回归用于预测观察结果落入特定类别的可能性。逻辑回归使用S形逻辑函数来映射0和1之间的预测值。

  5. 逻辑函数在逻辑回归中扮演什么角色?
    逻辑回归依赖于逻辑函数将输出转换为概率得分。该分数表示观测值属于特定类别的概率。S形曲线有助于对数据进行阈值处理并将其分类为二元结果。*

往期内容回顾

线性回归算法深入浅出

  • 15
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绎岚科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值