当前位置: 首页 > news >正文

Python逻辑回归分类

# Python逻辑回归分类
# 逻辑回归虽然名字带"回归",实际是分类算法
# 本质是用 sigmoid 函数将线性回归输出映射到 [0,1] 概率区间

# 1. 导入库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification, load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix

# 2. 生成二分类数据集
X, y = make_classification(
n_samples=300, n_features=2, n_redundant=0,
n_clusters_per_class=1, random_state=42
)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

# 3. 创建并训练逻辑回归模型
# C 是正则化强度的倒数(越小正则化越强)
lr = LogisticRegression(C=1.0, solver='lbfgs', random_state=42)
lr.fit(X_train, y_train)

# 4. 查看模型参数
print(f"截距 (bias): {lr.intercept_[0]:.4f}")
print(f"系数 (weights): {lr.coef_[0]}")
# 决策边界: w0*x0 + w1*x1 + b = 0

# 5. predict vs predict_proba
y_pred = lr.predict(X_test) # 硬分类 [0 或 1]
y_prob = lr.predict_proba(X_test) # 概率矩阵 [P0, P1]
print(f"\n前 5 个样本预测类别: {y_pred[:5]}")
print(f"前 5 个样本预测概率:\n{y_prob[:5]}")
# 当 P1 >= 0.5 时,预测为类别 1;否则为 0

# 6. sigmoid 函数的计算演示
def sigmoid(z):
"""Sigmoid 函数: 将任意实数映射到 [0,1]"""
return 1.0 / (1.0 + np.exp(-z))

# 计算决策函数值(线性部分)
z = np.dot(X_test, lr.coef_[0]) + lr.intercept_[0]
manual_prob = sigmoid(z)
# 验证手动计算的概率与 predict_proba 一致
print(f"手动计算概率 vs API 概率 (前 3 个):")
print(np.column_stack([manual_prob[:3], y_prob[:3, 1]]))

# 7. 准确率评估
accuracy = accuracy_score(y_test, y_pred)
print(f"\n测试集准确率: {accuracy:.4f}")

# 8. 多分类(OvR 和 multinomial)
# LogisticRegression 默认使用 multinomial(多项逻辑回归)
iris = load_iris()
X_iris, y_iris = iris.data[:, :2], iris.target # 只用前 2 个特征
X_train_i, X_test_i, y_train_i, y_test_i = train_test_split(
X_iris, y_iris, test_size=0.3, random_state=42
)

# 一对多策略 (OvR): 为每个类别训练一个二分类器
lr_ovr = LogisticRegression(multi_class='ovr', max_iter=1000)
lr_ovr.fit(X_train_i, y_train_i)
print(f"\n多分类 (OvR) 准确率: {lr_ovr.score(X_test_i, y_test_i):.4f}")

# 多项逻辑回归 (multinomial): 使用 softmax 函数
lr_multi = LogisticRegression(multi_class='multinomial', max_iter=1000)
lr_multi.fit(X_train_i, y_train_i)
print(f"多分类 (Multinomial) 准确率: {lr_multi.score(X_test_i, y_test_i):.4f}")

# 9. 混淆矩阵
cm = confusion_matrix(y_test_i, lr_multi.predict(X_test_i))
print(f"\n混淆矩阵:\n{cm}")
# 对角线是正确分类,非对角线是错误分类

# 10. 总结
# 逻辑回归关键点:
# - 使用 sigmoid 将线性输出转为概率
# - 默认阈值 0.5,可通过 predict_proba 自定义
# - 多分类支持 OvR 和 softmax (multinomial)
# - 参数 C 控制正则化强度,防止过拟合

http://www.jsqmd.com/news/924232/

相关文章:

  • 基于Arduino Leonardo的自制头部控制游戏手柄:低成本辅助技术实践
  • 恒威车灯|17年工厂直供LED激光像素大灯升级 - 奔跑123
  • Windows 11 LTSC 3分钟找回微软商店:一键恢复完整应用生态的终极方案
  • 2026 石家庄手表变现选哪家 添价收安全高效能否秒到账 - 薛定谔的梨花猫
  • 商用电磁炉厂家怎么选?东莞百丰2026全系产品深度解析 - 品牌优选官
  • novel-downloader深度实战:一站式小说采集与离线阅读解决方案
  • 如何永久掌控你的微信聊天记录:WeChatMsg完整本地化数据备份指南
  • Translumo:打破语言障碍的实时屏幕翻译解决方案
  • 燃气节能炉是什么?一文读懂核心功能与优势(2026最新版)——东莞百丰燃气节能炉厂家全解析 - 品牌优选官
  • Pose-Search:5分钟掌握基于AI的人体姿态识别与智能搜索技术
  • 手搓Arduino Uno:基于MCP2221A实现USB直连编程与最小系统搭建
  • 湖北行以学文教育怎么样?靠谱吗?中央电教馆授权招生机构深度评测 ——从官方授权、课程体系、服务体验、拿证效率多维度评测帮你判断这家机构是否靠谱 - 教育官方推荐官
  • 2026 工业地坪漆厂家推荐榜单:聚氨酯超耐磨、环氧自流平、水性环氧场景适配(专业 + 技术 + 避坑全解析) - 资讯纵览
  • 终极AMD显卡驱动精简指南:如何让你的系统性能提升75%
  • 如何永久保存微信聊天记录?WeChatMsg给你终极解决方案
  • 3步掌握Windows消息保护神器:彻底告别撤回困扰
  • 2026合肥黄金回收靠谱商家推荐,三大上门回收平台对比回收价格对比 + 避坑指南 - 资讯纵览
  • Obsidian模板终极指南:如何用16个模板快速搭建你的第二大脑知识库
  • 华靓甄选合伙人周总,用“笨功夫”把生意做到了家门口 - 资讯纵览
  • 如何在3分钟内完成GTNH中文汉化:新手终极安装指南
  • WeChatMsg:完全掌控微信聊天记录的终极解决方案
  • 联想刃7000K BIOS隐藏功能3步解锁指南:从受限用户到完全管理员权限
  • 不定长滑动窗口篇--罗姆的刷题记录
  • 2026电商专用封箱胶带机、快递装袋机厂家推荐榜单:提升仓储打包效率全解析 - 资讯纵览
  • 从零构建Arduino多功能平台:LED点阵驱动、中断与TVout协同设计
  • 2026北京黄金回收多少钱一克?靠谱商家推荐TOP3,16区全域免费上门当场到账 - 资讯纵览
  • 2026 西安翡翠回收哪家更靠谱 添价收翡翠回收中检认证门店透明报价快速回款 - 薛定谔的梨花猫
  • 【个人成长 | AI时代】别让 vibe-coding 变成新的信息流上瘾:越会用 AI,越要保住深度思考
  • 如何高效解决B站缓存视频播放问题:BilibiliCacheVideoMerge终极解决方案
  • Python状态机模式