机器学习(五)logistic回归

1.Logistic回归概述
我们都知道使用线性模型可以进行回归学习,但若要做的是分类任务改如何处理?只需要找一个单调可微函数将分类任务的真实标记y与线性回归模型的预测值联系起来。

考虑二分类任务,其输出标记y的取值为0和1,而线性回归模型产生的预测值是实值,于是需将实值z转换为0/1值。通过Sigmoid函数引入非线性因素,可以实现实值z转换为0/1值,处理二分类问题。

1.1 Sigmoid函数

首先我们介绍一下Sigmoid函数,也称为逻辑函数:​​​

其函数曲线如下:

逻辑回归的假设函数形式如下:

逻辑回归(Logistic Regression)详解

逻辑回归是一种用于解决二分类问题的机器学习算法。它通过拟合一个逻辑函数来预测输入数据属于某个类别的概率。在这篇文章中,我们将详细介绍逻辑回归的原理、优缺点以及如何用Python实现一个简单的逻辑回归模型。

一、逻辑回归原理

逻辑回归的基本原理是通过一个逻辑函数将线性回归的输出映射到[0,1]区间,从而表示某个事件发生的概率。逻辑函数的表达式如下:

$$ p(y=1|x) = \frac{1}{1 + e^{-z}} $$

其中,$z$是输入特征与权重的线性组合,即$z = w^T x + b$。逻辑回归的目标是通过最大化似然函数来求解最优的权重参数$w$和偏置项$b$。

## 二、逻辑回归优缺点

优点:

1. 输出值在[0,1]之间,可以表示为概率;
2. 模型简单,易于理解和实现;
3. 对于非线性可分问题,可以通过引入核函数进行扩展。

 缺点:

1. 对异常值敏感;
2. 当特征间存在多重共线性时,模型性能会下降;
3. 不能很好地处理类别不平衡的数据。

三、Python实现逻辑回归

下面我们用Python实现一个简单的逻辑回归模型。首先,我们需要导入一些必要的库:

```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
```

接下来,我们生成一个二分类数据集:

```python
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2, random_state=42, n_clusters_per_class=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```

然后,我们创建一个逻辑回归模型并拟合训练数据:

```python
lr = LogisticRegression()
lr.fit(X_train, y_train)
```

最后,我们用测试集评估模型的性能:

```python
y_pred = lr.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}".format(accuracy))
```

为了更直观地展示逻辑回归的分类效果,我们可以绘制一个二维平面图:

```python
def plot_decision_regions(X, y, classifier):
    h = .02
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.contourf(xx, yy, Z, alpha=0.8)
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o', s=50)
    plt.xlim(X[:, 0].min() - 0.5, X[:, 0].max() + 0.5)
    plt.ylim(X[:, 1].min() - 0.5, X[:, 1].max() + 0.5)
    plt.show()

plot_decision_regions(X, y, lr)
```

运行上述代码,你将看到一个类似下图的分类效果图:

至此,我们已经介绍了逻辑回归的基本原理和如何用Python实现一个简单的逻辑回归模型。希望这篇文章对你有所帮助!

  • 37
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值