🌟欢迎来到 我的博客 —— 探索技术的无限可能!
🌟博客的简介(文章目录)
目录
- 逻辑回归
- 逻辑回归的介绍
- 逻辑回归的优点
- 逻辑回归的缺点
- 逻辑回归的应用
- 实践
- 演示
- 库函数导入
- 模型训练
- 模型参数查看
- 数据和模型可视化
- 模型预测
- 基于鸢尾花数据集的逻辑回归分类
逻辑回归
逻辑回归的介绍
逻辑回归是一种广义线性模型,常用于解决分类问题。
逻辑回归是一种常用的统计方法,通常用于处理分类问题。其基本原理是利用线性回归模型的结果通过一个sigmoid函数(也称为逻辑函数)将连续的预测值映射到0和1之间,从而进行分类。逻辑回归常被用于二分类问题,但也可以通过一些技巧进行多分类。逻辑回归的简洁性和直观性使其在实际应用中得到广泛采用。通过将线性回归的结果经过逻辑函数转换,逻辑回归可以将预测结果转化为类别概率,这为许多问题提供了更为直观的解释。此外,逻辑回归的数学基础相对简单,易于理解和实现,使其成为许多数据科学从业者入门机器学习的首选算法之一。
逻辑回归的优点
逻辑回归具有许多优点。
- 简单而直观,易于理解和实现。
- 模型的训练和预测速度快,适用于大规模数据集。
- 逻辑回归可以提供分类结果的概率估计,而不仅仅是类别标签,这对许多实际应用具有重要意义。
- 逻辑回归对于特征之间的关系不敏感,即使特征之间存在一定的相关性,也能给出可靠的结果。这使得逻辑回归成为了许多实际问题的首选分类算法之一。
逻辑回归的缺点
逻辑回归也存在一些缺点。
- 它假设特征之间是线性相关的,这在某些情况下可能不成立,导致模型性能下降。
- 逻辑回归往往不能很好地处理非线性关系,因此在特征之间存在复杂关系时效果可能不佳。
- 逻辑回归对异常值敏感,需要进行一定的数据预处理和异常值处理。虽然逻辑回归有这些缺点,但在许多实际问题中,通过合适的特征工程和模型调优,仍然可以取得很好的分类效果。
逻辑回归的应用
逻辑回归在许多领域都有广泛的应用。在医学领域,它常被用于疾病预测和诊断,如肿瘤预测、心脏病风险评估等。在市场营销中,逻辑回归常被用于客户分类和预测,帮助企业制定营销策略。在信用评分领域,逻辑回归可以用于评估借款人的信用风险,辅助银行和金融机构做出贷款决策。总的来说,逻辑回归作为一种简单而有效的分类算法,在各个领域都有着广泛的应用前景。
实践
演示
请提前下载
!pip install matplotlib seaborn
!pip install -U scikit-learn --user
!pip install matplotlib seaborn
!pip install -U scikit-learn --user
库函数导入
## 基础函数库
import numpy as np ## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns## 导入逻辑回归模型函数
from sklearn.linear_model import LogisticRegression
模型训练
演示LogisticRegression分类
构造了一个简单的数据集,包含了6个样本和对应的标签。然后调用逻辑回归模型,并将数据集传入模型进行拟合。
## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])## 调用逻辑回归模型
lr_clf = LogisticRegression()## 用逻辑回归模型拟合构造的数据集
lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2
模型参数查看
输出会显示逻辑回归模型的权重和截距值。
## 查看其对应模型的w
print('the weight of Logistic Regression:',lr_clf.coef_)## 查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)
数据和模型可视化
可视化构造的数据样本点
绘制数据集的散点图,其中样本的颜色表示其对应的类别
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show()
可视化决策边界
绘制数据集的散点图,并在图中添加逻辑回归模型的决策边界(用蓝色线表示)。
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
z_proba = z_proba[:, 1].reshape(x_grid.shape)
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')plt.show()
可视化预测新样本
在散点图上添加了两个新的样本点,并在图中标注其位置。同时也包括了之前的训练样本和逻辑回归模型的决策边界。
plt.figure()
## new point 1
x_fearures_new1 = np.array([[0, -1]])
plt.scatter(x_fearures_new1[:,0],x_fearures_new1[:,1], s=50, cmap='viridis')
plt.annotate(s='New point 1',xy=(0,-1),xytext=(-2,0),color='blue',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))## new point 2
x_fearures_new2 = np.array([[1, 2]])
plt.scatter(x_fearures_new2[:,0],x_fearures_new2[:,1], s=50, cmap='viridis')
plt.annotate(s='New point 2',xy=(1,2),xytext=(-1.5,2.5),color='red',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))## 训练样本
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')# 可视化决策边界
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')plt.show()
模型预测
利用训练好的逻辑回归模型对新样本点进行预测,并输出其预测的类别和每个类别的概率。
## 在训练集和测试集上分别利用训练好的模型进行预测
y_label_new1_predict = lr_clf.predict(x_fearures_new1)
y_label_new2_predict = lr_clf.predict(x_fearures_new2)print('The New point 1 predict class:\n',y_label_new1_predict)
print('The New point 2 predict class:\n',y_label_new2_predict)## 由于逻辑回归模型是概率预测模型(前文介绍的 p = p(y=1|x,\theta)),所以我们可以利用 predict_proba 函数预测其概率
y_label_new1_predict_proba = lr_clf.predict_proba(x_fearures_new1)
y_label_new2_predict_proba = lr_clf.predict_proba(x_fearures_new2)print('The New point 1 predict Probability of each class:\n',y_label_new1_predict_proba)
print('The New point 2 predict Probability of each class:\n',y_label_new2_predict_proba)
可以发现训练好的回归模型将X_new1预测为了类别0(判别面左下侧),X_new2预测为了类别1(判别面右上侧)。其训练得到的逻辑回归模型的概率为0.5的判别面为上图中蓝色的线。
基于鸢尾花数据集的逻辑回归分类
接下文:机器学习算法 —— 基于鸢尾花数据集的逻辑回归分类