机器学习算法基础——逻辑回归

news2024/11/19 21:16:15

01逻辑回归可以用来解决简单的二分类问题。
逻辑回归的预测函数为 h θ ( x ) = g ( θ T x ) h_\theta (x)=g(\theta^Tx) hθ(x)=g(θTx),其中 g ( x ) g(x) g(x) s i g m o i d sigmoid sigmoid函数,用于将数值映射到区间 [ 0 , 1 ] [0,1] [0,1]中,然后再取对数值用于刻画损失函数。
在这里插入图片描述
在这里插入图片描述

线性逻辑回归:

我们先来实现一个简单的线性逻辑回归的二分类问题:
数据下载:https://pan.baidu.com/s/17bCV1et7fpr2T2XK3dcRRA?pwd=o4br

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.metrics import classification_report #计算正确率,召回率,F1值
from sklearn import linear_model #导入逻辑回归模型库

data=np.genfromtxt("LR-testSet.csv",delimiter=',') #读取数据
x_data=data[:,:-1] #特征
y_data=data[:,-1]  #标签
column,row=data.shape

x0=[]
y0=[]
x1=[]
y1=[]

def classify(): #分类并绘制散点图
    for i in range(column):
        if(data[i,-1]==1):
            x0.append(x_data[i,0])
            y0.append(x_data[i,1])
        else:
            x1.append(x_data[i,0])
            y1.append(x_data[i,1])
    plt.scatter(x0,y0,c='b',marker='.',label='0')
    plt.scatter(x1,y1,c='r',marker='x',label='1')
classify() 

model=linear_model.LogisticRegression() 
model.fit(x_data,y_data) #建立逻辑回归模型

x_=np.arange(-4,4,0.01)
classify()
y_=-(model.intercept_+model.coef_[0][0]*x_)/model.coef_[0][1]
plt.plot(x_,y_,c='y') #输出分类线
plt.legend()
plt.title("01逻辑回归")
plt.xlabel("x0")
plt.ylabel("x1")
plt.show()

在这里插入图片描述

predictions=model.predict(x_data)
print(classification_report(y_data,predictions)) #输出分类结果分析

在这里插入图片描述
可以看到正确率在95%左右,效果比较不错。

非线性逻辑回归

我们再来实现一个非线性的逻辑回归:
数据下载:https://pan.baidu.com/s/1D3Rp2XYeB_dXjTR-fj2mYg?pwd=l9vi

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
from sklearn.metrics import classification_report
from sklearn.preprocessing import PolynomialFeatures #多项式特征库

data=np.genfromtxt("LR-testSet2.txt",delimiter=',') 
x_data=data[:,:-1]
y_data=data[:,-1]
colomn,row=data.shape

x0=[]
y0=[]
x1=[]
y1=[]
def classify():
    for i in range(colomn):
        if(y_data[i]==0):
            x0.append(x_data[i][0])
            y0.append(x_data[i][1])
        else:
            x1.append(x_data[i][0])
            y1.append(x_data[i][1])
    plt.scatter(x0,y0,c='b',marker='o',label='0')
    plt.scatter(x1,y1,c='r',marker='x',label='1')
classify()
plt.legend()
plt.show()

在这里插入图片描述

poly=PolynomialFeatures(degree=2) #采用二次多项式
x_poly=poly.fit_transform(x_data)
model=linear_model.LogisticRegression()
model.fit(x_poly,y_data)
x_min,x_max=x_data[:,0].min()-0.3,x_data[:,0].max()+0.3
y_min,y_max=x_data[:,1].min()-0.3,x_data[:,1].max()+0.3

xx,yy=np.meshgrid(np.arange(x_min,x_max,0.01),np.arange(y_min,y_max,0.01))
z=model.predict(poly.fit_transform(np.c_[xx.flatten(),yy.flatten()])) #先展平,在从列方向叠加
z=z.reshape(xx.shape) #把展平后的一维的z重新变为与xxsize相同的二维数组
cs=plt.contourf(xx,yy,z) #绘制等高线图
plt.scatter(x0,y0,c='b',marker='o',label='0')
plt.scatter(x1,y1,c='r',marker='x',label='1')
plt.show()

在这里插入图片描述

predictions=model.predict(x_poly)
print(classification_report(y_data,predictions))

在这里插入图片描述
正确率为81%,也算是相当不错的结果了。

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

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

相关文章

51单片机实训day3——点亮LED灯、闪烁LED灯(一)理论

内 容:编写代码实现LED灯的点亮功能 学 时:2学时 知识点:分析原理图、LED灯控制原理 重点:GPIO参数配置、LED原理图分析 难点:编写 GPIO参数配置函数、LED点亮函数 时间:2022年12月21日 9:00~…

实验1 数据库定义与操作语言实验

前言:实验本身并不是很难,照着实验指导书抄就行,不过注意有些sql语句和mysql语句是不相同的,需要进行一定的修改 数据集链接 实验1 数据库定义与操作语言实验 实验1.1 数据库定义实验 1.实验目的 理解和掌握数据库DDL语言&am…

指挥中心显示大屏类型简介

因工作需要,现在需要不断补充指挥中心建设过程中各种设备知识,怕被别人忽悠了也不知道,抓紧学习了解。今天学习大屏部分,目前来说,常见的显示大屏主要分为DLP拼接屏、LCD拼接屏和LED小间距大屏几种类型。 1、DLP大屏 …

【maven工程的pom.xml文件内部结构详解+maven工程的多层次依赖管理】

目录pom文件内部【结构详解】pom文件内部【依赖管理】1、依赖传递&#xff1a;2、依赖传递过程中&#xff0c;版本冲突&#xff1a;3、依赖传递过程中&#xff0c;对外隐藏主动断开&#xff1a;pom文件内部【依赖的作用范围】pom文件内部【结构详解】 <?xml version"…

【ARMv8 异常模型入门及渐进 11 - Linux 中断上下文 irq_enterirq_exit】

文章目录1.1 背景1.1.1 in_interrupt 定义1.1.2 irq_count 定义1.1.3 preempt_count 各域含义1.1.4 ARMv8 中断处理流程回顾1.1 背景 在 Linux 代码中经常会看到 WARN_ON(in_interrupt()); 或者 BUG_ON(in_interrupt()); 从名字可以看出这两句的含义是&#xff1a;如果当前处在…

运用手机多媒体之使用通知

文章目录使用通知将程序运行到手机上使用通知创建通知渠道通知的基本用法通知的进阶技巧setStyle()方法不同重要等级的通知渠道使用通知 将程序运行到手机上 在AS当中除了使用模拟器来运行我们的程序,还可以使用真机来运行我们写的程序想要将程序运行到手机上,首先需要将手机…

推荐系统学习笔记-推荐系统分布式离线训练

背景 在推荐、广告、搜索等互联网场景下&#xff0c;动则TB甚至PB级数据量。导致几乎不可能在传统单机环境下完成机器学习模型的训练。分布式机器学习训练成为称为唯一选择。 主要手段 • Spark MLlib • Parameter Server • Tensorflow Spark MLlib MLlib从功能上说与Sc…

如何利用地表温度遥感数据和气象资料计算农田地表水热通量

地表水热通量主要包括感热/显热通量和潜热通量&#xff0c;是陆-气交互以及水-热-碳循环研究的重要变量。其中&#xff0c;潜热通量是地表蒸散发的能量形式&#xff0c;对农业水资源管理、作物水分利用效率等非常关键。由于热红外遥感对地表干湿变化、以及农业干旱响应快速&…

WeakHashMap源码解析

WeakHashMap源码解析 简介 WeakHashMap 是一种 弱引用 map&#xff0c;内部的 key 会存储为弱引用&#xff0c;当 jvm gc 的时候&#xff0c;如果这些 key 没有强引用存在的话&#xff0c;会被 gc 回收掉&#xff0c;下一次当我们操作 map 的时候会把对应的 Entry 整个删除掉…

金融信息科技服务外包风险管理能力成熟度评估规范 学习笔记 附录下载地址

金融信息科技服务外包风险管理的范围 本标准规定了金融业信息科技服务外包风险管理能力成熟度评估体系以及对发包方和承包方的总体要求&#xff0c;分别对发包方、承包方的服务外包风险管理能力成熟度进行了分级定义&#xff0c;并规定了对发包方和承包方进行服务外包风险管理…

《OpenGL 模型》 渲染出帅气的暗影战士

模型Assimp流程网格模型效果Assimp 3D建模工具&#xff0c;可以让艺术家创建复杂的形状&#xff0c;Assimp库用于加载&#xff0c;如加载obj格式的文件到我们的程序之中&#xff0c;下载CMAKE用于构建该库&#xff08;会有很多问题&#xff09;&#xff0c;不过&#xff01;我…

【小程序】小程序代码的构成

目录 项目结构 1. 了解项目的基本组成结构 2. 小程序页面的组成部分 JSON配置文件 1. JSON 配置文件的作用 2. app.json 文件 3. project.config.json 文件 4. sitemap.json 文件 5. 页面的 .json 配置文件 6. 新建小程序页面 7. 修改项目首页 项目结构 1. 了解项…

别再用过时的方式了!全新版本Spring Security,这样用才够优雅!

基本使用 我们先对比下Spring Security提供的基本功能登录认证&#xff0c;来看看新版用法是不是更好。 升级版本 首先修改项目的pom.xml文件&#xff0c;把Spring Boot版本升级至2.7.0版本。 <parent><groupId>org.springframework.boot</groupId><art…

Lua 元表(Metatable)

在 Lua table 中我们可以访问对应的 key 来得到 value 值&#xff0c;但是却无法对两个 table 进行操作(比如相加)。 因此 Lua 提供了元表(Metatable)&#xff0c;允许我们改变 table 的行为&#xff0c;每个行为关联了对应的元方法。 例如&#xff0c;使用元表我们可以定义 …

STM32程序设计规范浅析

这篇博客写到“STM32基础知识篇”里&#xff0c;一方面是一个很好地对过往工作的总结&#xff0c;另一方面也是整个专栏撰写计划的开端&#xff0c;古人云&#xff1a;良好的开端是成功的一半&#xff0c;在文章的最后详细地规划了整个专栏后期的更新计划。 笔者前段时间休息的…

无人机遥感图像拼接与处理操作技术

【内容简述】&#xff1a; 无人机遥感图像采集流程&#xff1a; 无人机遥感监测介绍 无人机航线规划设计 无人机飞行软件操作 无人机航拍一般过程 无人机遥感图像拼接软件操作&#xff1a; Photoscan软件介绍 软件基本操作与实践 遥感图像拼接的一般流程 遥感图像分组拼接与点…

【centos】安装nvida CUDA平台附带安装cudnn库

目录1.安装 CUDAToolKit2.安装cudnn库1.安装 CUDAToolKit 使用 lspci | grep -i nvidia列出所有支持的GPU 安装内核开发依赖包&#xff1a; yum install kernel-devel查看内核版本号&#xff0c;用来看与开发包版本号是否一致&#xff1a; uname -r查看nvida显卡驱动&#…

设计模式之迭代器模式

Iterator design pattern 迭代器模式的概念、迭代器模式的结构、迭代器模式的优缺点、迭代器模式的使用场景、迭代器模式的实现示例、迭代器模式的源码分析 1、迭代器模式的概念 迭代器模式&#xff0c;即提供一种方法来顺序访问聚合对象内的元素&#xff0c;而不暴露聚合对象…

LeetCode HOT 100 —— 448. 找到所有数组中消失的数字

题目 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 思路 原地哈希&#xff08;简单模拟&#xff09;&#xff1a; 核心思路&#xff1a; 因为…

Python 和 PyQt5 实现打地鼠小游戏

Python 和 PyQt5 实现打地鼠小游戏 实现效果&#xff1a; 视频效果&#xff1a; https://live.csdn.net/v/264602https://live.csdn.net/v/264602 代码&#xff1a; import random import sysfrom PyQt5.QtCore import QBasicTimer, Qt, QTimer from PyQt5.QtGui import QCo…