罗辑回归小demo

逻辑回归

介绍

逻辑回归是一种广泛应用于分类问题的算法。与线性回归不同,逻辑回归可以处理离散输出变量,并且能够提供概率估计。

原理

Sigmoid函数

逻辑回归使用Sigmoid函数将线性组合转换为概率值。Sigmoid函数的公式如下:

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

其中, z = w T x + b z=w^Tx+b z=wTx+b是输入的线性组合, w w w是权重向量, x x x是输入特征向量, b b b是偏置项。

Sigmoid函数的值域在 ( 0 , 1 ) (0,1) (0,1)之间,表示为样本属于正类的概率。

损失函数

逻辑回归使用交叉熵损失函数来衡量模型的性能。对于二元分类问题,交叉熵损失函数的公式如下:

J ( w , b ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( y ^ ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − y ^ ( i ) ) ] J(w,b)=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}\log(\hat{y}^{(i)})+(1-y^{(i)})\log(1-\hat{y}^{(i)})] J(w,b)=m1i=1m[y(i)log(y^(i))+(1y(i))log(1y^(i))]

其中, m m m是样本数, y ( i ) y^{(i)} y(i)是第 i i i个样本的真实标签值(取0或1), y ^ ( i ) \hat{y}^{(i)} y^(i)是模型对第 i i i个样本的预测值(取0到1之间的概率值)。

梯度下降

逻辑回归使用梯度下降算法来最小化损失函数。梯度下降算法的公式如下:

w = w − α ∂ J ( w , b ) ∂ w w=w-\alpha\frac{\partial J(w,b)}{\partial w} w=wαwJ(w,b)

b = b − α ∂ J ( w , b ) ∂ b b=b-\alpha\frac{\partial J(w,b)}{\partial b} b=bαbJ(w,b)

其中, α \alpha α是学习率(learning rate), ∂ J ( w , b ) ∂ w \frac{\partial J(w,b)}{\partial w} wJ(w,b) ∂ J ( w , b ) ∂ b \frac{\partial J(w,b)}{\partial b} bJ(w,b)分别是损失函数对权重和偏置项的偏导数。

通过更新权重和偏置项,模型可以逐步优化并提高预测性能。

代码演示

下面是一个使用Python实现逻辑回归的例子。我们将使用sklearn库中的Iris数据集进行演示。

首先,我们需要导入所需的库和数据集:

from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt

# 加载Iris数据集
iris = load_iris()
X = iris.data[:, :2]  # 只使用前两个特征
y = (iris.target != 0) * 1 # 将标签转换为二元变量

# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

接下来,我们可以使用sklearn库中的LogisticRegression类创建模型并进行训练:

# 创建逻辑回归模型
lr = LogisticRegression()

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

训练完成后,我们可以使用测试集进行预测并计算模型的准确率:

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

# 计算准确率
accuracy = np.mean(y_pred == y_test)
print('Accuracy:', accuracy)

最后,我们可以绘制决策边界图来可视化模型的分类效果:

# 绘制决策边界
xx, yy = np.mgrid[4:8:.01, 2:4.5:.01]
grid = np.c_[xx.ravel(), yy.ravel().astype(np.float32))
probs = lr.predict_proba(grid)[:, 1].reshape(xx.shape)

f, ax = plt.subplots(figsize=(8, 6))
ax.contour(xx, yy, probs, levels=[.5], cmap="Greys", vmin=0, vmax=.6)
ax.scatter(X_test[:,0], X_test[:,1], c=y_test, s=50,
           cmap="RdBu", vmin=-.2, vmax=1.2,
           edgecolor="white", linewidth=1)

plt.show()

这段代码会生成一个包含决策边界的散点图,其中红色表示正类,蓝色表示负类。

总结

逻辑回归是一种常用的分类算法,可以对样本进行概率估计,并通过最小化交叉熵损失函数来优化模型。在实际应用中,我们需要根据数据集的特点和任务需求选择合适的逻辑回归模型,并通过调整超参数和优化算法来提高预测性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ITIRONMAN

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

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

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

打赏作者

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

抵扣说明:

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

余额充值