sklearn基础--『监督学习』之逻辑回归分类

逻辑回归 这个算法的名称有一定的误导性。

虽然它的名称中有"回归",当它在机器学习中不是回归 算法,而是分类 算法。

因为采用了与回归类似的思想来解决分类问题,所以它的名称才会是逻辑回归。

逻辑回归 的思想可以追溯到19世纪,由英国统计学家Francis Galton在研究豌豆遗传问题时首次提出。

然而,真正将逻辑回归 应用于机器学习的是加拿大统计学家Hugh Everett,他在1970年代提出了广义线性模型(GLM),其中包括逻辑回归。

逻辑回归广泛应用于各种分类问题,如垃圾邮件识别、疾病预测、市场细分等。

1. 算法概述

逻辑回归 通过构建一个逻辑模型来预测分类结果。

它首先对特征进行线性回归,
y = w 0 x 0 + w 1 x 1 + w 2 x 2 + w 3 x 3 . . . + w n x n = w T x y=w_0 x_0+w_1 x_1+w_2 x_2+w_3 x_3...+w_n x_n=w^Tx y=w0x0+w1x1+w2x2+w3x3...+wnxn=wTx

然后通过一个sigmoid函数 ( y = 1 1 + e − x y=\frac{1}{1+e^{-x}} y=1+e−x1)将线性回归的结果转化为概率值,
sigmoid函数 的输出范围是0到1。

最后得到逻辑回归 的公式: h w ( x ) = 1 1 + e − y = 1 1 + e − w T x h_{w}(x)=\frac{1}{1+e^{-y}}=\frac{1}{1+e^{-w^Tx}} hw(x)=1+e−y1=1+e−wTx1

2. 创建样本数据

这次用scikit-learn中的样本生成器make_moons来生成二分类用的样本数据。

python 复制代码
from sklearn.datasets import make_moons

fig, ax = plt.subplots(1, 1)
X, y = make_moons(noise=0.05, n_samples=1000)
ax.scatter(X[:, 0], X[:, 1], marker="o", c=y, s=25)

plt.show()

关于用make_moons生成样本数据的介绍,请参考:sklearn基础--『数据加载』之样本生成器

3. 模型训练

首先,分割训练集 和测试集。

python 复制代码
from sklearn.model_selection import train_test_split

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

这次按照8:2的比例来划分训练集和测试集。

然后用scikit-learn中的LogisticRegression模型来训练:

python 复制代码
from sklearn.neighbors import LogisticRegression

# 定义逻辑回归模型
reg = LogisticRegression()

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

# 在测试集上进行预测
y_pred = reg.predict(X_test)

LogisticRegression的主要参数包括:

  1. penalty :广义线性模型的正则项,可选值包括L1正则项'l1'、L2正则项'l2'、复合正则'elasticnet'和无正则项None,默认值为'l2'。
  2. dual:是否为对偶问题。默认为False。
  3. tol:容忍度。默认值为0.0001。
  4. C:惩罚系数。默认值为1.0。
  5. fit_intercept:是否拟合截距。默认为True。
  6. intercept_scaling:截距的缩放因子。默认值为1。
  7. class_weight:样本权重,用于实现数据的不同分类重要性的惩罚。默认为None。
  8. random_state:随机种子。默认为None。
  9. solver :优化算法。默认为'warn',可选项有'lbfgs'、'sag'、'saga'、'newton-cg'、'sag-l2'、'saga-l2'、'lbfgs-l2'和'optimal'。
  10. max_iter:最大迭代次数。默认为100。
  11. multi_class:多类别分类器。默认为'warn',当n_classes>2时,默认为True,否则默认为False。
  12. n_jobs:线程数。默认为None,表示使用CPU的核数。

最后验证模型的训练效果:

python 复制代码
# 比较测试集中有多少个分类预测正确
correct_pred = np.sum(y_pred == y_test)

print("预测正确率:{}%".format(correct_pred/len(y_pred)*100))

# 运行结果
预测正确率:89.0%

准确率还可以,可以调节生成样本数据的make_moons方法的noise参数,

看看在不同混乱程度的样本数据下,逻辑回归的准确性是否健壮。

4. 总结

逻辑回归 在很多领域都有广泛的应用,如自然语言处理、图像识别、医疗诊断、信用评分等。

它尤其适用于那些样本特征之间存在线性关系,且目标变量为二元的情况。

逻辑回归算法主要优势在于::

  1. 实现简单:易于理解和实现,可以在短时间内训练出模型。
  2. 计算效率高:在训练和预测时具有较高的计算效率,可以处理大规模的数据集。
  3. 可解释性强:可以给出概率输出,这使得它更容易解释和信任。

不过,逻辑回归也有其不足之处:

  1. 对数据质量和特征选择敏感:如果数据中存在噪音或者特征选择不当,可能会出现过拟合或者欠拟合的情况。
  2. 只能处理二分类问题:如果要处理多分类问题的话,需要把多分类问题转为多个二分类问题。
  3. 对异常值和缺失值敏感:处理不当可能会影响模型的性能。
相关推荐
小蒋观天下7 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
wuyk5559 小时前
ROS2 Humble 从入门实战教程:第六章:节点:机器人的工作细胞
机器学习
数聚天成DeepSData13 小时前
教育年限数据库跨版本对齐:年龄组、性别与五年间隔怎么处理
人工智能·深度学习·机器学习·数据集·deepsdata
新新学长搞科研13 小时前
【SPIE出版丨EI稳定检索】第三届模式识别与图像分析国际学术会议(PRIA 2026)
图像处理·机器学习·图像分析
饼饼学习空间智能14 小时前
低空经济进入新兴支柱产业:物理AI如何重构低空智能监管系统?
大数据·深度学习·机器学习
Omics Pro15 小时前
研究证实AI虚拟细胞可用于药物靶点发现
数据库·人工智能·算法·机器学习·自然语言处理
在所不辞兄16 小时前
常微分方程详解与应用
人工智能·神经网络·算法·机器学习
袖清暮雨16 小时前
机器学习之随机森林
人工智能·随机森林·机器学习
lisw0516 小时前
图像质量评估:从误差可见度到结构相似性
人工智能·机器学习·计算机视觉
论文复现现场16 小时前
Qwen-VL 票据 OCR 微调需要几张 4090?单卡 QLoRA、4 卡训练与 OOM 排查
人工智能·机器学习·ocr·分布式训练·qlora·rtx4090·qwen2.5-vl