机器学习-分类模型-逻辑分类(2)

2023-11-05

逻辑分类简要概念:

 

逻辑分类实际上是基于线性回归+ sigmoid的一个分类器。

二分类代码:

import numpy as np
import matplotlib.pyplot as plt
import sklearn.linear_model as lm 

x = np.array([[3, 1],
              [2, 5],
              [1, 8],
              [6, 4],
              [5, 2],
              [3, 5],
              [4, 7],
              [4, -1]])
y = np.array([0, 1, 1, 0, 0, 1, 1, 0])

# solver='liblinear':逻辑函数的函数关系('liblinear为线性函数关系)
# C=1 代表正则强度,用于防止过拟合
model = lm.LogisticRegression(solver='liblinear', C=1) # 基于逻辑回归的逻辑分类器

model.fit(x, y)
result = model.predict([[3, 9], [6, 1]])

# 画图:

# 获取样本集的边界
l, r = x[:, 0].min() - 1, x[:, 0].max() + 1
b, t = x[:, 1].min() - 1, x[:, 1].max() + 1

# 把可视区间划分为500 * 500的二维坐标矩阵
n = 500
# np.linspace(l, r, n)从 l到r 之间拆 500份
# np.meshgrid() 相当于一个500*500的点阵,grid_x 横坐标(500*500)  grid_y 纵坐标(500*500)
grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))

# 使用模型,得到点阵中每个坐标的类别
# grid_x.ravel() 500*500变成1行 1*250000
# np.column_stack() 两个矩阵按照列合并 (25000*2)
mesh_x = np.column_stack((grid_x.ravel(), grid_y.ravel()))
mesh_z = model.predict(mesh_x) # mesh_z (250000*1)
grid_z = mesh_z.reshape(grid_x.shape)

# 画图
plt.figure('LR Classifcation', facecolor='lightgray')
plt.title('LR Classifcation', fontsize=16)
plt.scatter(x[:, 0], x[:, 1], c=y, cmap = 'jet', label='Sample Points', s=70, zorder=3) # c=y 按照结果y划分颜色,cmap = 'jet'颜色工具包, zorder=3提高图层层面
# 调用plt.pcolormesh()绘制分类边界
# 原理: 根据参数,把可是区间拆分成坐标网格,由于每个网格都有相应的类别,可以使用cmap为每个网格填充颜色
plt.pcolormesh(grid_x, grid_y, grid_z, cmap='gray')
plt.legend()
plt.show()

输出图:

多分类代码:

# 如果要分3种或3种以上类别
# 假设 A、B、C
# 方法: 构建1个分类器,用来判断为A概率。再构建1个,用来判断为B概率,再构建1个,用来判断为C概率
#        最终选择概率最高的类别作为新样本的分类结果

import numpy as np
import matplotlib.pyplot as plt
import sklearn.linear_model as lm 

x = np.array([[4, 7],
              [3.5, 8],
              [3.1, 6.2],
              [0.5, 1],
              [1, 2],
              [1.2, 1.9],
              [6, 2],
              [5.7, 1.5],
              [5.4, 2.2]])
y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])

# 逻辑分类器
model = lm.LogisticRegression(solver='liblinear', C=1000) # 内部会检测有多少种类,按照上述方法来构建多个分类器
model.fit(x, y)

# 获取样本集的边界
l, r = x[:, 0].min() - 1, x[:, 0].max() + 1
b, t = x[:, 1].min() - 1, x[:, 1].max() + 1

# 把可视区间划分为500 * 500的二维坐标矩阵
n = 500
# np.linspace(l, r, n)从 l到r 之间拆 500份
# np.meshgrid() 相当于一个500*500的点阵,grid_x 横坐标(500*500)  grid_y 纵坐标(500*500)
grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))

# 使用模型,得到点阵中每个坐标的类别
# grid_x.ravel() 500*500变成1行 1*250000
# np.column_stack() 两个矩阵按照列合并 (25000*2)
mesh_x = np.column_stack((grid_x.ravel(), grid_y.ravel()))
mesh_z = model.predict(mesh_x) # mesh_z (250000*1)
grid_z = mesh_z.reshape(grid_x.shape)

# 画图
plt.figure('LR Classifcation', facecolor='lightgray')
plt.title('LR Classifcation', fontsize=16)
plt.scatter(x[:, 0], x[:, 1], c=y, cmap = 'jet', label='Sample Points', s=70, zorder=3) # c=y 按照结果y划分颜色,cmap = 'jet'颜色工具包, zorder=3提高图层层面
# 调用plt.pcolormesh()绘制分类边界
# 原理: 根据参数,把可是区间拆分成坐标网格,由于每个网格都有相应的类别,可以使用cmap为每个网格填充颜色
plt.pcolormesh(grid_x, grid_y, grid_z, cmap='gray')
plt.legend()
plt.show()

输出图:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习-分类模型-逻辑分类(2) 的相关文章

  • 设置面积图 openpyxl 的透明度(alpha)

    我想使用 openpyxl 设置面积图背景的透明度 我的图表代码是 from openpyxl drawing fill import PatternFillProperties ColorChoice c2 AreaChart c2 gr
  • Python生成随机数时出现属性错误

    我早些时候就同一段代码提出了类似的问题 但我再次发现自己陷入困境 特别是生成包含两个字母 两个数字 然后两个字母的车牌 我希望这个问题不是重复的 但在这种情况下 我非常不知道该怎么做 这是到目前为止的代码 我希望你能找出我哪里出错了 fro
  • Python XLWT调整列宽

    XLWT 的易用性给我留下了深刻的印象 但有一件事我还没有弄清楚该怎么做 我正在尝试将某些行调整为显示所有字符所需的最小宽度 换句话说 如果双击单元格之间的分隔线 excel 会做什么 我知道如何将列宽调整为预定量 但我不确定如何确定显示所
  • Python2 math.fsum 不准确?

    我正在使用 python2 数学模块来计算 fsum 的总和 据我所知 0 1通常不能存储二进制 据我了解 math fsum 应该以某种方式解决这个问题 import math math fsum 0 0 0 1 0 1 math fsu
  • 如何显示 pymongo.errors.OperationFailure 详细信息?

    写入 MongoDB 时 我在 python 中遇到 pymongo OperationsFailure 除了回溯之外 还有没有办法打印出详细信息或代码属性 另请参阅 http api mongodb org python current
  • 将鼠标悬停在 Folium 的弹出窗口中

    用这样一个简单的例子 import folium map 1 folium Map location 45 372 121 6972 zoom start 12 tiles Stamen Terrain folium Marker 45 3
  • 来自 yahoo 的 python lxml etree 小程序信息

    雅虎财经更新了他们的网站 我有一个 lxml etree 脚本 用于提取分析师建议 然而现在 分析师的建议已经存在 但只是以图表的形式出现 你可以看到一个例子这一页 https finance yahoo com quote CSX ana
  • 在 Windows 中安装 IPOPT 求解器以与 pyomo 一起使用

    如何安装 IPOPT 求解器以在 Windows 中与 pyomo 一起使用 我尝试了 pip install ipopt 但收到此错误 错误 为 ipopt 构建轮子失败 我正在使用 Windows 10 和 Python 3 7 4 在
  • 如何在 Pandas 中用多个唯一字符串替换重复值?

    import pandas as pd import numpy as np data Name Tom Tom Jack Terry Age 20 21 19 18 df pd DataFrame data 假设我有一个如下所示的数据框
  • Python + Selenium:驱动程序路径

    是否有可能在不输入路径的情况下运行 Python Selenium 脚本exePython 行中每个脚本中的文件 driver webdriver Chrome 同样的问题也适用于 IE 驱动程序 Edge 驱动程序 和 Gecko 驱动程
  • 尝试将行附加到按对象分组中的每个组时出现奇怪的行为

    这个问题是关于一个函数在应用于两个不同的数据帧时以意想不到的方式表现的 更准确地说 是 groupby 对象 要么是我遗漏了一些明显错误的东西 要么是 pandas 中存在错误 我编写了以下函数 将一行附加到 groupby 对象中的每个组
  • 对训练和测试数据帧使用相同的标签编码器

    我有 2 个不同的 csv 其中包含训练数据和测试数据 我从这些 train features df 和 test features df 创建了两个不同的数据帧 请注意 测试和训练数据有多个分类列 因此我需要对它们应用 labelEnco
  • 如何从数据存储区刷新 NDB 实体?

    我希望能够在我的代码调用的测试中断言Model put 对于已修改的实体 不幸的是 似乎正在进行一些缓存 例如以下代码 from google appengine ext import ndb class MyModel ndb Model
  • 在Python中绘制像素的最佳方法[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想知道 用 x 和 y 值在 python 中绘制像素的最简单方法是什么 可能最简单的方法是使用PIL http effbot org i
  • 如何有效地找到两个轮廓集之间的所有交点

    我想知道找到两组轮廓线之间所有交点 舍入误差 的最佳方法 哪种方法最好 这是示例 import matplotlib pyplot as plt import numpy as np x np linspace 1 1 500 X Y np
  • 如何使用 BeautifulSoup 排除表中的某些行?

    我已经从表格中获得了所需的数据 但不想要各个玩家统计数据之间的缩写 Rk Pos Name 等 如何在保留所需数据的同时排除这些数据 包含缩写的行被归类为 thead 但我不知道如何使用该信息来跳过它 我知道玩家的数据都被压缩在一起 但现在
  • 在 ubuntu 12.04 上安装 ReviewBoard

    我正在尝试使用 easy install 在 ubuntu 12 04 上安装 ReviewBoard http www reviewboard org docs manual 1 7 admin installation linux ht
  • 从线程队列中获取所有项目

    我有一个线程将结果写入队列 在另一个线程 GUI 中 我定期 在 IDLE 事件中 检查队列中是否有结果 如下所示 def queue get all q items while 1 try items append q get nowai
  • 如何在(最好是纯)Python 中解码 QR 码图像?

    TL DR 我需要一种使用 最好是纯 Python 从图像文件中解码 QR 码的方法 我有一个带有 QR 码的 jpg 文件 我想使用 Python 对其进行解码 我发现有几个库声称可以做到这一点 PyQRCode 网站在这里 http p
  • python chaco轴标签时间格式

    在 Enthought 的 Chaco 中 TimeFormatter类用于格式化刻度的时间字符串 标签 有没有办法指定时间格式 类似于time strftime 源代码现在将显示月份和日期时的格式硬编码为美国风格 MMDD 我想添加一些灵

随机推荐

  • 走进开源:认识开源许可

    想要查看前面的笔记请翻阅我的CSDN博客 作者码字不易 喜欢的话点赞 加个关注吧 后期还有很多干货等着你 最近一直在研究开源项目 发现对开源项目的开源许可有一些模糊 现在记录下来算是一个巩固 1 走进开源 开源 一词对应英文 Open So
  • Unity project 发布成Standalone EXE版本后,它的Debug infomation在什么位置

    一 Unity工程发布成Standalone Exe后 它的Debug 信息保存位置如下 二 示例 三 log文件
  • Openwrt开发笔记(3)—— 修改路由的网关地址和无线SSID 密码

    修改网关地址 一般来说默认的网关地址是192 168 1 1 如果我们想要定制自己的网关地址的话 可以选择在刷机后使用web配置页进行修改 或者通过指令进行修改 对于项目开发者而言 在源码中修改更加符合要求 轩面介绍指令修改和源码修改的2中
  • MQTT协议-使用CONNECT报文连接阿里云

    使用网络调试助手发送CONNECT报文连接阿里云 参考 https blog csdn net daniaoxp article details 103039296 在前面文章介绍了如何组装CONNECT报文 以及如何计算剩余长度 CONN
  • anaconda换源和pip换源

    在开发中我们经常会用到第三方的包 但是由于墙的限制导致了下载国外的包 普遍偏慢 这里我们可以修改为国内的镜像源 下载速度自然就会快起来 一 pip换源 国内的镜像源有很多 但是好用的就是阿里和清华的 这里我们选择清华的镜像源 别问为什么 问
  • 全网最强,Python接口自动化测试实战-接口参数关联(购物实例)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • element ui的upload 手动上传头像(复制就能用)

    之前在网上看了好多 结果给的代码都不全 整了快一天 才整好 心态都崩了 想砸电脑 这里贴出来愿后来人省力 下面的代码除了最下面的axios请求需要和自己的匹配之外 其他的可以直接复制使用了 服务器接口处理函数 这里只是处理函数 其余的部分没
  • 2020软件测试最新视频教程大合集汇总

    软件测试入门教程分享给你 软件测试工程师需要适当掌握一些技能 如操作系统 WIN UNIX这个你可以有针对性的去找着学数据库 常见的有SQLSERVER ORACLE 熟悉常用的编程语言 C C JAVA测试工具 这个就比较多一些 建议循序
  • js逆向——破解百度翻译

    针对进行了ajax加载的网页 有两种方法去爬取它当中的内容 1 使用selenium进行模拟浏览器进行选择元素 然后进行爬取 这种方法最简单 但是牺牲了速度 爬虫关键就在速度 因此针对大量的数据的话 就远远不能满足了 2 使用js逆向破解
  • 解决:IE浏览器打开就自动最小化,无法打开

    方法一 先把所有的IE窗口关了 只打开一个IE窗口 最大化这个窗口 关了它 OK 以后的默认都是最大化的了 方法二 先关闭所有的IE浏览器窗口 用鼠标右键点击快速启动栏的IE浏览器图标 在出现的快捷菜单中点击 属性 系统随即弹出 启动Int
  • JavaScript cookie实现html的select标签刷新后不回到默认值而是保持之前选择值

  • devops-1-docker安装

    TOC源码安装docker yum安装 查看信息 curl o etc yum repos d Centos 7 repo http mirrors aliyun com repo Centos 7 repo yum mache cat e
  • 关于运行PR提示vcruntime140.dll无法继续执行代码的4个解决方法分享

    关于运行安 PR提示vcruntime140 dll无法继续执行代码的困扰 小编将为您提供详细的解决方法 在此之前 我们需要了解一下vcruntime140 dll文件的作用 vcruntime140 dll 是 Visual C Redi
  • 一个U盘制作多个系统镜像方法 ——适用于ARM架构UOS和KYLIN银河麒麟系统

    一个U盘制作多个系统镜像方法 适用于ARM架构UOS和KYLIN银河麒麟系统 一 背景 作为一个喜欢收集系统镜像的同学 加起来收集的ARM架构和X86架构系统镜像少则10个 每装一次系统都要刻录一次U盘 且等待刻录的时间也挺让人着急 为了尽
  • 使用EF Core 连接远程oracle 不需要安装oracle客户端方法

    连接字符串 Data Source DESCRIPTION ADDRESS PROTOCOL TCP HOST IP地址 PORT 1521 CONNECT DATA SERVICE NAME orcl Persist Security I
  • Jetpack-Compose 学习笔记(五)—— State 状态是个啥?又是新概念?

    系列第五篇 进入 Compose 中有关 State 状态的学习 前面几篇笔记讲了那么多内容 都是基于静态界面的展示来说的 即给我一个不变的数据 然后将它展示出来 如何在 Compose 中构建一个随数据而变化的动态界面呢 相信看完这篇就知
  • 【Vue】学习笔记-数据交互

    Vue 学习笔记 数据交互 概述 安装axios 通过axios向后台获取数据 数据交互的实现 常见错误总结 概述 基于Vue的web项目显示的所有服务端数据 都是通过Ajax获取的 官方推荐使用Axios作为Ajax库 所以本文主要讲解在
  • centos6.8升级内核

    centos6 8升级内核 1 查看内核版本命令 uname r 2 更新nss yum update nss 3 安装elrepo的yum源 升级内核需要使用elrepo的yum源 在安装yum源之前还需要我们导入elrepo的key r
  • Python使用腾讯云-短信服务发送手机短信

    目前 腾讯云短信 为客户提供 国内短信 国内语音 和 海外短信 三大服务 腾讯云短信SDK支持以下操作 国内短信 国内短信支持操作 指定模板单发短信 指定模板群发短信 拉取短信回执和短信回复状态 海外短信 海外短信支持操作 指定模板单发短信
  • 机器学习-分类模型-逻辑分类(2)

    逻辑分类简要概念 逻辑分类实际上是基于线性回归 sigmoid的一个分类器 二分类代码 import numpy as np import matplotlib pyplot as plt import sklearn linear mod