首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用tanh代替sigmoid在sklearn逻辑回归中的应用

基础概念

Sigmoid函数

  • 公式:( \sigma(x) = \frac{1}{1 + e^{-x}} )
  • 输出范围:(0, 1)
  • 适用于二分类问题,输出可以解释为概率。

Tanh函数

  • 公式:( \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} )
  • 输出范围:(-1, 1)
  • 是Sigmoid函数的缩放版本,输出范围更广。

优势

Tanh函数的优势

  1. 输出范围:Tanh的输出范围是(-1, 1),相比于Sigmoid的(0, 1),Tanh可以更好地处理负值数据。
  2. 梯度消失:虽然Tanh和Sigmoid都存在梯度消失的问题,但Tanh的梯度消失问题相对较轻,因为其输出范围更大。
  3. 对称性:Tanh函数是关于原点对称的,这在某些情况下可以简化模型的训练。

类型

在逻辑回归中,激活函数的选择主要分为两类:

  1. Sigmoid:适用于二分类问题,输出范围为(0, 1)。
  2. Tanh:适用于二分类和多分类问题,输出范围为(-1, 1)。

应用场景

Tanh的应用场景

  • 当数据集中包含负值时,Tanh函数可以更好地处理这些数据。
  • 在某些情况下,Tanh函数可以提高模型的训练速度和性能。

如何使用Tanh代替Sigmoid在sklearn逻辑回归中的应用

在sklearn中,逻辑回归默认使用Sigmoid函数作为激活函数。要使用Tanh函数,可以通过自定义损失函数和梯度来实现。以下是一个示例代码:

代码语言:txt
复制
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 生成数据集
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42)

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

# 自定义Tanh激活函数
def tanh_activation(x):
    return np.tanh(x)

# 自定义损失函数
def custom_loss(y_true, y_pred):
    return -np.mean(y_true * np.log(tanh_activation(y_pred)) + (1 - y_true) * np.log(1 - tanh_activation(y_pred)))

# 自定义梯度
def custom_gradient(y_true, y_pred):
    return (y_pred - y_true) / (np.cosh(y_pred) ** 2)

# 使用sklearn的LogisticRegression
model = LogisticRegression(solver='lbfgs', max_iter=1000)

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

# 预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

参考链接

sklearn逻辑回归文档

通过上述代码,你可以看到如何在不修改sklearn源码的情况下,使用Tanh函数代替Sigmoid函数进行逻辑回归模型的训练和预测。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Deeplearning.ai 课程笔记第一部分:神经网络与深度学习

对于不同应用领域,我们需要不同类型神经网络: 对于房价预测和在线广告等应用,采用是相对标准神经网络 对于图像领域应用,常常使用卷积神经网络(CNN) 对于序列数据,例如音频、语言等,常常使用循环神经网络...2.2.1 逻辑回归代价函数 image.png 2.3 梯度下降 image.png 2.3.1 逻辑归中梯度下降 逻辑归中,梯度下降涉及到复合求导,需要基于链式法则求解。...3.4 随机初始化 逻辑归中随机初始化权重并不重要,而在神经网络中我们需要进行随机初始化。...np.zeros((2,1)) # its ok to have b as zero 对于 sigmoidtanh 来说,我们需要随机数较小,因为较大值会导致训练初期线性激活输出过大...而如果没有使用 sigmoidtanh 作为激活函数,就不会有很大影响。 常数 0.01 对单层隐藏层来说是合适,但对于更深神经网络来说,这个参数会发生改变来保证线性计算得出值不会过大。

86650

深度神经网络之损失函数和激活函数

通过上面的介绍,我们能够了解到神经网络之中损失函数和激活函数作用,但实际上DNN可以使用损失函数和激活函数有不少,这时我们应该如何去做选择呢?下面我们介绍一些DNN之中常见损失函数和激活函数。...常见方法是选用交叉熵损失函数来代替均方差损失函数,首先来看看交叉熵损失函数形式。其中 ∙ 为向量内积,我们机器学习之Logistic回归中便用到类似的交叉熵损失函数形式。 ? ?...ReLU激活函数梯度爆炸和梯度消失方面有重要应用。 ? 那什么是梯度爆炸和梯度消失呢?可以简单理解为,反向传播算法过程中,由于我们使用是矩阵求导链式法则,会有一系列连乘运算。...4.2 Tanh激活函数 Tanh激活函数是Sigmoid函数变种,Tanh表达式如下所示。...同时Tanh自变量变化较大时,曲线变得平坦幅度没有Sigmoid那么大,这样求梯度变化值有一些优势。当然,是使用Tanh函数还是使用Sigmoid函数需要根据具体问题而定。 ?

1.5K20
  • 【机器学习】逻辑回归介绍(逻辑回归应用场景,原理,损失及优化详解!!!)

    学习目标 了解逻辑回归应用场景 知道逻辑回归原理 掌握逻辑回归损失函数和优化方案 逻辑回归应用场景 逻辑回归(Logistic Regression)是机器学习中 一种分类模型 ,逻辑回归是一种分类算法...由于算法简单和高效,实际中应用非常广泛 广告点击率 是否为垃圾邮件 是否患病 信用卡账单是否会违约 看到上面的例子,我们可以发现其中特点,那就是都属于两个类别之间判断。...逻辑回归就是解决二分类问题利器 逻辑回归原理 要想掌握逻辑回归,必须掌握两点: 逻辑归中,其输入值是什么 如何判断逻辑回归输出 2.1 输入 逻辑回归输入就是一个线性方程 2.2...激活函数 不熟悉神经网络和激活函数小伙伴们可以参考该篇文章:带你迅速了解sigmoidtanh,ReLU等激活函数http://t.csdnimg.cn/IiZ6h sigmoid函数 判断标准...之前,我们用均方误差来衡量线性回归损失 逻辑归中,当预测结果不对时候,我们该怎么衡量其损失呢?

    11510

    机器学习篇(六)

    模型加载和保存 当把模型训练好以后就不会再使用训练集来预测,而是要实际去预测。这就涉及到模型加载和保存。...所以线性回归中问题,逻辑归中一样会遇见。 比如过拟合等。逻辑回归将一个线性回归输入转换成了一个分类问题。这就是逻辑回归核心。 这个核心叫做sigmoid函数。...sigmoid函数样子: ? sigmoid函数将闲心回归输入转变成了0~1之间值。这就转换成了概率问题。...逻辑归中使用损失函数是:对数似然损失函数。 对数似然损失函数值越小,说明预测类别准确率就越高。...逻辑归中以概率小那个特征为依据,比如是否患有癌症,会算出 没有患癌症概率计算出来。

    64550

    机器学习-逻辑回归:从技术原理到案例实战

    通过使用 Sigmoid 函数,我们可以确保预测值始终合适范围内。 损失函数 逻辑归中,最常用损失函数是交叉熵损失(Cross-Entropy Loss)。...这其实是最大似然估计(MLE)逻辑归中具体应用。 举例:电子邮件分类 假设你正在构建一个电子邮件分类器来区分垃圾邮件和正常邮件。...使用交叉熵损失函数,你可以通过最大化似然函数来“教”模型如何更准确地进行分类。 梯度下降优化 举例:股票价格预测 虽然逻辑回归通常不用于回归问题,但梯度下降优化算法很多其他类型问题中也是通用。...例如,预测股票价格时,同样可以使用梯度下降来优化模型参数。 特征选择与正则化 特征选择逻辑归中非常重要,因为不相关或冗余特征可能会导致模型性能下降。...通过本章讨论,我们不仅深入了解了逻辑回归数学基础,还通过具体例子和应用场景,让这些看似复杂数学概念更加贴近实际,易于理解。这有助于我们实际应用中更加灵活地使用逻辑回归,以解决各种分类问题。

    1.6K20

    神经网络常用激活函

    Sigmoid激活函数 Sigmoid也被称为逻辑激活函数(Logistic Activation Function),逻辑归中常用,它能将一个实数值压缩到0到1范围内。...但Sigmoid激活函数应用中也有一些缺点,它主要有以下几个方面的问题: 1.梯度消失 从Sigmoid函数图像可以看到,函数曲线0和1附近是平坦,也就是说,Sigmoid函数梯度(导数)0...但与Sigmoid不同是,Tanh函数-1到1输出范围内是零均值。即可以把Tanh函数看做是两个Sigmoid叠加在一起。以下是Tanh函数图像以及它导数图像。 ? ?...实际运用中,TanhSigmoid更好。这主要是因为Sigmoid函数输入处于[-1,1]之间时,函数值变化敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态,影响神经网络预测精度值。...没有饱和意味着至少正数范围内,能够对梯度消失有抵抗能力,所以神经元至少一半输入范围内不会反向传播全部都是0结果。Relu计算效率上表现也非常不错,因为它是使用简单阈值实现

    75520

    【小白学习PyTorch教程】七、基于乳腺癌数据集​​构建Logistic 二分类模型

    「@Author:Runsen」 逻辑归中预测目标变量不是连续,而是离散。可以应用逻辑回归一个示例是电子邮件分类:标识为垃圾邮件或非垃圾邮件。图片分类、文字分类都属于这一类。...在这篇博客中,将学习如何在 PyTorch 中实现逻辑回归。 1. 数据集加载 在这里,我将使用来自 sklearn乳腺癌数据集。这是一个简单二元类分类数据集。...(x_test) 现在,使用Logistic 模型之前,还有最后一个关键数据处理步骤。...让我们看看如何在 PyTorch 中编写用于逻辑回归自定义模型。第一步是用模型名称定义一个类。这个类应该派生torch.nn.Module。...输入通过之前定义 2 个层。此外,第二层输出通过一个称为 sigmoid激活函数。 激活函数用于捕捉线性数据中复杂关系。在这种情况下,我们使用 sigmoid 激活函数。

    1.3K30

    概率校准

    使用sklearn自动生成二分类数据集,划分训练集、验证集和测试集对不同分类器,画出可靠性曲线训练集上:验证集上如何进行概率校准(probability calibration)方法1:Platt...(分类器输出概率能够代表真实概率) 下面使用使用sklearn自动生成二分类数据集画出几种基本二分类模型可靠性曲线。...SVM很不自信呈sigmoid曲线,随机森林也是。 一般来说,boosting 树模型和朴素贝叶斯呈现比较差可靠性曲线,而神经网络(逻辑回归)和 bagging 树模型相对较好。...将模型输出放入逻辑归中训练,最后将逻辑回归结果作为模型校准结果。...生成一列总体来说递增数据,如上图红线结果就是对原样本进行保序回归拟合结果,是一个分段函数 那么,如何应用保序回归来进行概率校准呢?假设有数据集 和预测结果 。

    2.6K41

    机器学习(ML)三之多层感知机

    y.backward() xyplot(x, x.grad, 'grad of relu') sigmoid函数 sigmoid函数可以将元素值变换到0和1之间: sigmoid函数早期神经网络中较为普遍...在后面“循环神经网络”一章中我们会介绍如何利用它值域0到1之间这一特性来控制信息神经网络中流动。下面绘制了sigmoid函数。当输入接近0时,sigmoid函数接近线性变换。...y.backward() xyplot(x, x.grad, 'grad of sigmoid') tanh函数  tanh(双曲正切)函数可以将元素值变换到-1和1之间: 绘制tanh函数。...当输入接近0时,tanh函数接近线性变换。虽然该函数形状和sigmoid函数形状很像,但tanh函数坐标系原点上对称。...分类问题中,我们可以对输出O做softmax运算,并使用softmax回归中交叉熵损失函数。 回归问题中,我们将输出层输出个数设为1,并将输出O直接提供给线性回归中使用平方损失函数。

    82230

    神经网络算法(Nerual Networks)

    离散型变量可以被编码成每一个输入单元对应一个特征值可能赋值 比如:特征值A可能取三个值(a0, a1, a2), 可以使用3个输入单元来代表A。...输入:一个训练好神经网络(a trained neural network) 初始化权重(weights)和偏向(bias): 随机初始化-1到1之间,或者-0.5到0.5之间,每个单元有 一个偏向...Sigmoid函数是一个在生物学中常见S型函数,也称为S型生长曲线。...信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络阈值函数,将变量映射到0,1之间。 ? ? sigmoid函数 7.2 双曲函数(tanh) 定义: ? ?...np.tanh(x) # 双曲函数(tanh)导数 def tanh_deriv(x): return 1.0 - np.tanh(x)*np.tanh(x) # 逻辑函数(logistic

    1K10

    斯坦福CS231N深度学习与计算机视觉第六弹:神经网络结构与神经元激励函数

    比如说,我们逻辑归中用到sigmoid函数就是一种激励函数,因为对于求和结果输入,sigmoid函数总会输出一个0-1之间值,我们可以认为这个值表明信号强度、或者神经元被激活和传导信号概率...当然,和逻辑归中看到一样,最后神经元预测结果y值如果大于0.5,那我们会判定它属于这个类别,反之则属于另外一个类别。...所以实际应用中,tanh激励函数还是比sigmoid要用多一些。 3.3 ReLU ?...它有它对应优势,也有缺点: 优点1:实验表明,它使用,相对于sigmoidtanh,可以非常大程度地提升随机梯度下降收敛速度。...4 激励函数/神经元小总结 以上就是我们总结常用神经元和激励函数类型。顺便说一句,即使从计算和训练角度看来是可行,实际应用中,其实我们很少会把多种激励函数混在一起使用

    57660

    从原理到代码,轻松深入逻辑回归模型!

    逻辑归中,计算出预测值是一个 0 到 1 概率值,通常,我们以 0.5 为分界线,如果预测概率值大于 0.5 则会将最终结果归为 1 这个类别,如果预测概率值小于等于 0.5 则会将最终结果归为...图4-4 逻辑回归分类示意图 虽然逻辑回归很简单,但它被广泛应用在实际生产之中,而且通过改造逻辑回归也可以处理多分类问题。逻辑回归不仅本身非常受欢迎,它同样也是我们将在第 5 章介绍神经网络基础。...4、逻辑回归损失函数 逻辑归中 Sigmoid 函数用来使值域(0,1)之间,结合之前所讲线性回归,我们所得到完整公式其实是: ? ,其中 ? 就是之前所介绍多元线性回归。...现在问题就比较简单明了了,对于给定样本数据集 X,y,我们如何找到参数 theta ,来获得样本数据集 X 所对应分类输出 y(通过p概率值) 需要求解上述这个问题,我们就需要先了解下逻辑归中损失函数..._theta = None 接着我们实现下在损失函数中 ? 这个函数,我们之前 Sigmoid 函数那个小节已经实现过了,对于这个函数我们输入值为多元线性回归中 ? (其中 ?

    58020

    Shallow Neural Networks习题解析

    解答: 课程中讲到,tanh输出在-1和1之间,数据具有归一化分布,使得下一层学习变得更加简单。 答案是True ? 解答: 计算Z时候需要前一层神经网络激励输出A,其它都使用本层参数。...解答: Sigmoid输出一个介于0和1之间值,是二元分类一个非常好选择。如果输出小于0.5,则可以将其归类为0,如果输出大于0.5,则归类为1。 答案是选项3 ?...解答: 逻辑回归问题W和b参数通常初始化为0,它不会引起神经网络对称问题,其原因在于: 逻辑回归没有隐藏层。...如果将权重初始化为零,则逻辑归中第一个示例x将输出零,但逻辑回归导数取决于不是零输入x(因为没有隐藏层)。因此,第二次迭代中,如果x不是常量向量,则权值遵循x分布并且彼此不同。...解答: tanhsigmoid一样,对于较大值曲线变得平坦,这导致其梯度接近于零,从而梯度下降速度变慢,所以W通常初始化为0附近一个很小数。 答案是选项3 ?

    78440

    Python 逻辑回归:理论与实践

    逻辑回归二分类问题上表现出色,并且其思想和原理更复杂分类算法中也有广泛应用。 1.2 逻辑回归应用领域 由于其简单高效特点,逻辑回归被广泛应用于各个领域,涵盖了众多实际应用场景。...接下来博客中,我们将逐步深入探讨逻辑回归原理,并通过实例代码演示如何在Python中实现逻辑回归算法。...在下一节中,我们将展示如何在Python中实现逻辑回归,并通过实例演示其不同数据集上分类效果。 3....逻辑回归优缺点 逻辑回归是一种简单而有效分类算法,许多实际应用中得到广泛使用。然而,它也有其自身优点和缺点。本节中,我们将探讨逻辑回归优点和缺点。...我们介绍了Sigmoid函数作为逻辑回归核心组成部分,以及如何使用决策边界将样本分为两个类别。同时,我们还讨论了逻辑回归损失函数,即交叉熵损失函数,用于衡量模型预测值与实际标签之间差异。

    51450

    pytorch学习笔记(十):MLP

    \text{sigmoid}(x) = \frac{1}{1 + \exp(-x)}. sigmoid(x)=1+exp(−x)1​. sigmoid函数早期神经网络中较为普遍,但它目前逐渐被更简单...在后面“循环神经网络”一章中我们会介绍如何利用它值域0到1之间这一特性来控制信息神经网络中流动。下面绘制了sigmoid函数。当输入接近0时,sigmoid函数接近线性变换。...当输入接近0时,tanh函数接近线性变换。虽然该函数形状和sigmoid函数形状很像,但tanh函数坐标系原点上对称。...分类问题中,我们可以对输出 O \boldsymbol{O} O做softmax运算,并使用softmax回归中交叉熵损失函数。...回归问题中,我们将输出层输出个数设为1,并将输出 O \boldsymbol{O} O直接提供给线性回归中使用平方损失函数。 4. 代码实现MLP 我们已经了解了多层感知机原理。

    1.3K11

    一文读懂神经网络中激活函数(二)

    1.Sigmoid 数学形式: Sigmoid 因其 logistic 回归中重要地位而被人熟知,值域 0 到 1 之间。...然而,分类任务中,sigmoid 正逐渐被 Tanh 函数取代作为标准激活函数。 sigmoid 函数曾经被使用很多,不过近年来,用它的人越来越少了。...2.Tanh 数学表达: 分类任务中,双曲正切函数(Tanh)逐渐取代 Sigmoid 函数作为标准激活函数,其具有很多神经网络所钟爱特征。它是完全可微分,反对称,对称中心原点。...为了解决学习缓慢和/或梯度消失问题,可以使用这个函数更加平缓变体(log-log、softsign、symmetrical sigmoid 等等) 实际应用中,tanh效果几乎都比sigmoid...当然了解LSTM模型朋友也知道Sigmoid函数会用于“遗忘门”。但是其他情况下,由于梯度消失问题,要尽量避免使用sigmoid函数(和tanh函数)。

    2.7K110

    深度学习笔记总结(1)

    由于任何事件发生概率仅存在于0和1范围之间,因此sigmoid是不错选择。 softmax函数是一种更通用逻辑激活函数,用于多类分类。 ? tanh tanh看起来和sigmoid差不多。...因为函数值域-1 和+1 激活函数,其均值是更接近零均值训练一个算法模型时,如果使用 tanh 函数代替 sigmoid 函数中心化数据,使得数据平均值更接近 0 而不是 0.5. ?...tanh函数主要用于两类之间分类任务。 重点:sigmoid 函数和 tanh 函数两者共同缺点是,?...区间变动很大情况下,激活函数导数或者激活函数斜率都会远大于0,程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中, 使用 ReLu 激活函数神经网络通常会比使用...第二,sigmoidtanh 函数导数正负饱和区梯度都会接近于 0,这会造成梯度弥散,而 Relu 和 Leaky ReLu 函数大于 0 部分都为常熟,不会产生梯度弥散现象。

    96400
    领券