逻辑回归LogisticRegression quickstart

news2024/11/16 20:36:27

本文将用可视化思路理解逻辑回归

数学背景

在这里插入图片描述
比如我们认定一个的值只可能在[0, 1], 那当小于0.5,我们认为他就是a,当大于0.5,我们认为他就是b

数据集

使用鸢尾花数据集

  • 4个特征值
  • 3个类别
    在这里插入图片描述
    在这里插入图片描述

二分类,单维度

  • 只使用一个特征X = iris.data[["petal width (cm)"]].values,方便可视化
  • 使用y = iris.target_names[iris.target] == 'virginica'方法,将3分类变成2分类,即判断是否为virginica
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)

X = iris.data[["petal width (cm)"]].values
y = iris.target_names[iris.target] == 'virginica'
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

log_reg = LogisticRegression(random_state=42)
log_reg.fit(X_train, y_train)

可视化

X_new = np.linspace(0, 3, 1000).reshape(-1, 1)  # reshape to get a column vector
y_proba = log_reg.predict_proba(X_new)
decision_boundary = X_new[y_proba[:, 1] >= 0.5][0, 0]

plt.figure(figsize=(8, 3))  # extra code – not needed, just formatting
plt.plot(X_new, y_proba[:, 0], "b--", linewidth=2, label="Not Iris virginica proba")
plt.plot(X_new, y_proba[:, 1], "g-", linewidth=2, label="Iris virginica proba")

plt.plot([decision_boundary, decision_boundary], [0, 1], "k:", linewidth=2,
         label="Decision boundary")

plt.plot(X_train[y_train == 0], y_train[y_train == 0], "bs")
plt.plot(X_train[y_train == 1], y_train[y_train == 1], "g^")

plt.xlabel("Petal width (cm)")
plt.ylabel("Probability")
plt.legend(loc="center left")

plt.axis([0, 3, -0.02, 1.02])
plt.grid()

plt.show()

在这里插入图片描述

  • 只分析单特征Petal width (cm)
  • 分界线是decision_boundary,当大于decision_boundary,是virginica花的可能性增大
  • 分界线是decision_boundary,当小于decision_boundary,是virginica花的可能性变小
  • 主要看正方形和三角形,那是我们的训练样本,说明decision_boundary分界线只是一个推测,不是百分百,即概率推测

二分类,二维度

  • “petal length (cm)”
  • “petal width (cm)”

注意代码X = iris.data[["petal length (cm)", "petal width (cm)"]].values

X = iris.data[["petal length (cm)", "petal width (cm)"]].values
y = iris.target_names[iris.target] == 'virginica'
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

log_reg = LogisticRegression(C=2, random_state=42)
log_reg.fit(X_train, y_train)

可视化

x0, x1 = np.meshgrid(np.linspace(2.9, 7, 500).reshape(-1, 1),
                     np.linspace(0.8, 2.7, 200).reshape(-1, 1))
X_new = np.c_[x0.ravel(), x1.ravel()]
# X_new 长500*宽200=100000

# for the decision boundary
left_right = np.array([2.9, 7])
boundary = -((log_reg.coef_[0, 0] * left_right + log_reg.intercept_[0])
             / log_reg.coef_[0, 1])

plt.figure(figsize=(10, 4))
plt.plot(X_train[y_train == 0, 0], X_train[y_train == 0, 1], "bs")
plt.plot(X_train[y_train == 1, 0], X_train[y_train == 1, 1], "g^")

plt.plot(left_right, boundary, "k--", linewidth=3)
plt.text(3.5, 1.27, "Not Iris virginica", color="b", ha="center")
plt.text(6.5, 2.3, "Iris virginica", color="g", ha="center")

plt.xlabel("Petal length")
plt.ylabel("Petal width")
plt.axis([2.9, 7, 0.8, 2.7])
plt.grid()
plt.show()

在这里插入图片描述
分析同单维度

多分类,二维度

  • “petal length (cm)”
  • “petal width (cm)”

注意代码y = iris["target"],已经不再只是判断是否为virginica

X = iris.data[["petal length (cm)", "petal width (cm)"]].values
y = iris["target"]
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

softmax_reg = LogisticRegression(C=30, random_state=42)
softmax_reg.fit(X_train, y_train)

可视化

# extra code – this cell generates and saves Figure 4–25

from matplotlib.colors import ListedColormap

custom_cmap = ListedColormap(["#fafab0", "#9898ff", "#a0faa0"])

x0, x1 = np.meshgrid(np.linspace(0, 8, 500).reshape(-1, 1),
                     np.linspace(0, 3.5, 200).reshape(-1, 1))
X_new = np.c_[x0.ravel(), x1.ravel()]

y_proba = softmax_reg.predict_proba(X_new)
y_predict = softmax_reg.predict(X_new)

zz1 = y_proba[:, 1].reshape(x0.shape)
zz = y_predict.reshape(x0.shape)

plt.figure(figsize=(10, 4))
plt.plot(X[y == 2, 0], X[y == 2, 1], "g^", label="Iris virginica")
plt.plot(X[y == 1, 0], X[y == 1, 1], "bs", label="Iris versicolor")
plt.plot(X[y == 0, 0], X[y == 0, 1], "yo", label="Iris setosa")

plt.contourf(x0, x1, zz, cmap=custom_cmap)
contour = plt.contour(x0, x1, zz1, cmap="hot")
plt.clabel(contour, inline=1)
plt.xlabel("Petal length")
plt.ylabel("Petal width")
plt.legend(loc="center left")
plt.axis([0.5, 7, 0, 3.5])
plt.grid()
plt.show()

在这里插入图片描述

分析同上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1526429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux docker3--数据卷-nginx配置示例

一、因为docker部署服务都是以最小的代价部署,所以通常在容器内部很多依赖和命令无法执行。进入容器修改配置的操作也比较麻烦。本例介绍的数据卷作用就是将容器内的配置和宿主机文件打通,之后修改宿主机的配置文件就相当于修改了docker进程的配置文件&a…

“灯塔”——一个让人爱不释手的前端监测工具

引言 "灯塔"(fee)作为一个前端监控系统,通常具备捕获浏览器端错误、性能监控、用户行为跟踪等功能。它的主要目的是帮助开发者了解他们的网站或应用在用户端的表现,以及时发现并解决问题。下面是关于这种系统的一些关键…

【web开发网页制作】Html+Css+js网页制作轮播效果个人网页主题(4页面附代码)

个人网页制作目录 涉及知识写在前面一、网页主题二、网页效果Page1、我的首页Page2、文经风采(学校)Page3、美图分享Page4、热剧推送视频效果 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCss 作者寄语 涉及知识 轮播效…

9. 编程常见错误归类

编程常见错误归类 9.1 编译型错误9.2 链接型错误9.3 运行时错误 9.1 编译型错误 编译型错误⼀般都是语法错误,这类错误⼀般看错误信息就能找到⼀些蛛丝马迹的,双击错误信息也能初步的跳转到代码错误的地方或者附近。编译错误,随着语言的熟练…

显隐特征融合的指静脉识别网络

文章目录 显隐特征融合的指静脉识别网络总结摘要介绍显隐式特征融合网络(EIFNet)掩膜生成模块(MGM)掩膜特征提取模块(MFEM)内容特征提取模块(CFEM)特征融合模块(FFM) THUFVS实验和结果数据集实现细节评估掩膜生成模型消融实验FFM模块门控层Batch Size损失函数超参数选择 论文 …

java 线上生产问题排查思路,jvm内存溢出实例重启原因排查生产实战

java jvm内存溢出实例重启排查生产实战(使用VisualVM) 背景 项目组线上生产环境不定期的发生内存爆满然后实例重启,实例发布上线后实例内存不断增长最后维持在百分之九十多,十分危险。因此我参与到了排查中,本篇博客将…

2258: 【搜索】【广度优先】最少转弯问题

题目描述 给出一张地图&#xff0c;这张地图被分为nm&#xff08;n,m<100&#xff09;个方块&#xff0c;任何一个方块不是平地就是高山。平地可以通过&#xff0c;高山则不能。现在你处在地图的&#xff08;x1,y1&#xff09;这块平地&#xff0c;问&#xff1a;你至少需要…

二、SQL基础学习(函数、约束、事务)

目录 1、函数1.1、字符串函数1.2、数值函数1.3、日期函数1.4 、流程函数 2、约束2.1、外键约束2.2、删除/更新行为 3、事务3.1、事务的四大特性3.2、并发事务问题3.2、事务的隔离级别 1、函数 1.1、字符串函数 # concat select concat(Hello, MySql);# lower select lower(He…

第六十回 吴用智赚玉麒麟 张顺夜闹金沙渡-飞桨科学计算套件PaddleScience

吴用说我到北京让卢俊义上山&#xff0c;小菜一碟&#xff0c;但是我需要一个粗心大胆的同伴一起去。黑旋风李逵自告奋勇&#xff0c;答应了吴用三件事才被允许去&#xff1a;一、 不喝酒 二、扮做道童听吩咐 三、不说话当哑巴。 两人拜做算命的道士和道童&#xff0c;来到北京…

zookeeper集群安装部署和集群异常处理

准备jdk和zookeeper安装包【官网即可下载】 zookeeper-3.5.1-alpha.tar.gz jdk1.7.0_8020200612.tar 准备三台linux虚拟机【具体以项目实际需要为准】&#xff0c;并安装jdk和zookeeper 虚拟机地址如下&#xff1a;194.1.1.86&#xff08;server.1&#xff09;、194.1.1.74…

Alma Linux - Primavera P6 EPPM 安装及分享

引言 继上一期发布的Rocky Linux版环境发布之后&#xff0c;近日我又制作了基于Alma Enterprise Linux 的P6虚拟机环境&#xff0c;同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机&#xff0c;请先与Oracle Primaver…

2024-03-18 作业

作业要求&#xff1a; 1> 将广播发送端和接收端各实现一遍 2> 将组播发送端和接收端各实现一遍 3> 将流式域套接字的服务器端和客户端各实现一遍 1&#xff1a;将广播发送端和接收端各实现一遍 运行代码&#xff1a; 服务端&#xff1a; 客户端&#xff1a; 运行截…

FREERTOS任务调度和切换

我们已经学会了 FreeRTOS 的任务创建和删除&#xff0c;挂起和恢复等基本操作&#xff0c;并且也学习了分析FreeRTOS 源码所必须掌握的知识&#xff1a;列表和列表项。但是任务究竟如何被创建、删除、挂起和恢复的&#xff1f;系统是怎么启动的等等这些我们还不了解&#xff0c…

html--花瓣

代码 <!DOCTYPE html> <html lang"en" ><head> <meta charset"UTF-8"> <title>Petals</title><link rel"stylesheet" href"css/style.css"></head><body><div class"…

探索ChatGPT时代下的下一代信息检索系统:机遇与挑战

1 Introduction 2022 年 11 月 30 日&#xff0c;OpenAI 推出了 ChatGPT&#xff0c;这是一款由先进的 GPT3.5 和更高版本的 GPT-4 生成语言模型提供支持的 AI 聊天机器人应用程序。该应用迅速吸引了全球超亿用户&#xff0c;创下了产品快速传播的新纪录。 它能够以对话的方式…

Linux docker2--镜像及容器操作-nginx部署示例

一、上一篇已经完成了docker的基础环境搭建&#xff0c;和docker的安装。不清楚的小伙伴可以自己找上一篇看一下。本例以部署nginx为例展示 二、镜像相关 1、切换docker的镜像源为阿里云 命令&#xff1a; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <&l…

数据库管理-第161期 数据库,走着瞧(20240318)

数据库管理161期 2024-03-18 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09;MySQLSACC走着瞧RACAIOps 总结 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&am…

php7.3.4连接sqlserver(windows平台)

前言 有个项目需要手上laravel连接客户的sqlserver数据库读取数据&#xff0c;故在本地开发的lnmp环境中&#xff0c;php需要增加扩展 过程 从微软官网下载sqlsrv扩展,注意注意php版本&#xff0c;下载地址 解压的文件会有nts和ts两个版本&#xff0c;本地打开phpinfo查看 将…

大型机开发入门

这里写目录标题 零 大型机应用场景1 IBM官方网站1.1 保险业务1.2 证券业务1.3 银行业务 2 日语2.1 常见口语 一 Cobol 古董1 cobol 语言的前景1.1 tiobe编程网站排名1.2 cobol &#xff08;Common Business-Oriented Language&#xff09; 2 环境安装及开发工具1.1 VScode Gnu…

最小化战斗力差距——算法思路

题目链接&#xff1a;1.最小化战斗力差距 - 蓝桥云课 (lanqiao.cn) 可分析&#xff0c;把一个数组分成两组&#xff0c;求一组的最大值与另一组的最小值的差值的绝对值最小&#xff0c;可以转换为求任意两个相邻数字之间的最小插值的绝对值。 可看图示&#xff1a; package lan…