Sigmoid函数:
Tanh函数:
Tanh函数的优势:
在逻辑回归中,激活函数的选择主要分为两类:
Tanh的应用场景:
在sklearn中,逻辑回归默认使用Sigmoid函数作为激活函数。要使用Tanh函数,可以通过自定义损失函数和梯度来实现。以下是一个示例代码:
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源码的情况下,使用Tanh函数代替Sigmoid函数进行逻辑回归模型的训练和预测。
领取专属 10元无门槛券
手把手带您无忧上云