【机器学习算法】——逻辑回归

目录

  • 逻辑回归理解
  • 损失函数
  • 代码
  • 练习
    • 1. 房屋价格与面积的关系
    • 2.基于学生特征的录取概率预测

逻辑回归理解

  • 逻辑回归是用来二分类的! 是在线性回归模型之后加了一个激活函数(Sigmoid)将预测值归一化到【0~1】之间,变成概率值。
    在这里插入图片描述

  • 一般计算其中一个类别的概率P,自然会得到另一个类别的概率1-P。假如一个人是女生的概率是0.7,是男生的概率是多少呢?自然是0.3。那你会认为这个人是男生还是女生呢?当时是女生!一般认为概率最大的类别为分类结果。

损失函数

  • MSE loss:计算数值之间的差异 (线性回归)
  • BCE Loss:计算分布之间的差异(逻辑回归)
    在这里插入图片描述
    在这里插入图片描述

代码

# 导入必要的库
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

# 准备数据
x_data = [1.0], [2.0], [3.0]
y_data = [0], [0], [1]

# 创建并拟合逻辑回归模型
model = LogisticRegression()
model.fit(x_data, y_data )

# 在测试集上进行预测
y_pred = model.predict(x_data)# predict预测的是值,可能是:[0,0,1]

# 计算准确率
accuracy = accuracy_score(y_data, y_pred)
print("Accuracy:", accuracy)


# 绘制决策边界
x = np.linspace(0, 10, 200).reshape(-1,1)#变成200行,1列
y = model.predict_proba(x)[:, 1]#predict_proba预测的是类别为1的概率值,取值范围为:[0,1]概率值[0.2,0.3,0.8]

plt.plot(x, y)
plt.plot([0, 10], [0.5, 0.5], c='r')#在概率=0.5时画一条红色直线;概率<0.5认为类别为0;概率>=0.5认为类别为1.
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()

在这里插入图片描述

练习

1. 房屋价格与面积的关系

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression,LinearRegression
from sklearn.metrics import mean_squared_error

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 设置随机种子以确保结果的可重现性
np.random.seed(42)

# 生成模拟数据:100个房屋的面积(平方米)和成交价格(万元)
areas = np.random.uniform(60, 200, 100)#生成均匀分布的随机数     X
prices = 1.2 * areas + np.random.normal(0, 20, 100)  # 假设价格与面积成正比,加上随机噪声      y

# 创建线性回归模型并训练
model= LinearRegression()
model.fit(areas.reshape(-1,1), prices)#(x=areas.reshape(-1, 1),y=prices)

# 使用模型预测所有房屋的价格
predicted_prices = model.predict(areas.reshape(-1,1))#预测:x---->y

# 计算均方误差
mse = mean_squared_error(prices, predicted_prices)
print(f"模型均方误差: {mse:.2f}")

# 绘制数据点和最佳拟合线
plt.figure(figsize=(10, 6))
plt.scatter(areas, prices, color='blue', label='实际价格')#scatter:散点图
plt.plot(areas, predicted_prices, color='red', label='最佳拟合线')

# 设置图表标题和坐标轴标签
plt.title('房屋价格与面积的线性回归')
plt.xlabel('面积(平方米)')
plt.ylabel('成交价格(万元)')

plt.legend()
plt.show()

2.基于学生特征的录取概率预测

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 设置随机种子以确保结果的可重现性
np.random.seed(42)

# 生成模拟数据:100个房屋的面积(平方米)和成交价格(万元)
areas = np.random.uniform(60, 200, 100)#生成均匀分布的随机数     X
prices = 1.2 * areas + np.random.normal(0, 20, 100)  # 假设价格与面积成正比,加上随机噪声      y

# 创建线性回归模型并训练
model= LinearRegression()
model.fit(areas.reshape(-1,1), prices)#(x=areas.reshape(-1, 1),y=prices)

# 使用模型预测所有房屋的价格
predicted_prices = model.predict(areas.reshape(-1,1))#预测:x---->y

# 计算均方误差
mse = mean_squared_error(prices, predicted_prices)
print(f"模型均方误差: {mse:.2f}")

# 绘制数据点和最佳拟合线
plt.figure(figsize=(10, 6))
plt.scatter(areas, prices, color='blue', label='实际价格')#scatter:散点图
plt.plot(areas, predicted_prices, color='red', label='最佳拟合线')

# 设置图表标题和坐标轴标签
plt.title('房屋价格与面积的线性回归')
plt.xlabel('面积(平方米)')
plt.ylabel('成交价格(万元)')

plt.legend()
plt.show()


线性回归和逻辑回归是机器学习的基础
分类和回归也是机器学习的两个最重要的分支!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mongo开启慢日志及常用命令行操作、数据备份

mongo开启慢日志及常用命令行操作、数据备份 1.常用命令行操作2.mongo备份3.通过命令临时开启慢日志记录4.通过修改配置开启慢日志记录 1.常用命令行操作 连接命令行 格式&#xff1a;mongo -u用户名 -p密码 --host 主机地址 --port 端口号 库名&#xff1b; 如&#xff1a;连…

排序的事

排序的事 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入n个不相同的正整数&#xff0c;每个数都不超过n。现在需要你把这些整数进行升序排序&#xff0c;每次可以交换两个数的位置&#xff0c;最少需…

.NET Framework修复工具

某些精简Windows系统或者第三方下载的改版Windows系统在安装.NET Framework的时候会出现类似下面的错误信息: 可以使用微软官方出的.NET Framework修复工具解决, 下载地址: 【免费】.NETFramework修复工具资源-CSDN文库 下载后运行即可修复系统里的.NET Framework

PyTorch 本地安装指南:全面支持 macOS 、 Linux 和 Windows 系统

PyTorch 本地安装指南&#xff1a;全面支持 macOS 、 Linux 和 Windows 系统 PyTorch 是一个功能强大的深度学习框架&#xff0c;支持高效的计算图和 GPU 加速&#xff0c;广泛应用于人工智能和机器学习项目中。本文从安装前的准备工作开始&#xff0c;详细介绍了如何使用 con…

【单片机基础知识】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]

参考资料&#xff1a; MCU的三种启动方式 - EdgeAI Lab 立芯嵌入式的视频 在SRAM中运行代码 - EdgeAI Lab 利用 Boot 选择不同的启动方式&#xff1a; 根据不同的启动方式&#xff0c;将不同的地址(主 FLASH/系统存储器/嵌入式 SRAM)映射到 0x0000 0000(系统中断向量表) 上…

记录一个Flutter 3.24单元测试点击事件bug

哈喽&#xff0c;我是老刘 这两天发现一个Flutter 3.24版本的单元测试的一个小bug&#xff0c;提醒大家注意一下。 老刘自己写代码十多年了&#xff0c;写Flutter也6年多了&#xff0c;没想到前两天在一个小小的BottomNavigationBar 组件上翻了车。 给大家分享一下事件的经过。…

第四篇:k8s 理解Service工作原理

什么是service&#xff1f; Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。 简单来说K8s提供了service对象来访问pod。我们在《k8s网络模型与集群通信》中也说过k8s集群中的每一个Pod&#xff08;最小调度单位&#xff09;都有自己的IP地址&#xff0c;都…

基于ResNet50和VGG16深度学习模型的阿尔茨海默病MRI图像分类与早期诊断研究

阿尔茨海默病&#xff08;AD&#xff09;是目前全球范围内最常见的神经退行性疾病之一&#xff0c;早期诊断对延缓疾病进程和改善患者生活质量至关重要。随着医学影像学的进步&#xff0c;基于MRI图像的阿尔茨海默病检测成为一种重要的研究方向。本文提出了一种基于深度学习的M…

【日常记录-Mybatis】PageHelper导致语句截断

1. 简介 PageHelper是Mybatis-Plus中的一个插件&#xff0c;主要用于实现数据库的分页查询功能。其核心原理是将传入的页码和条数赋值给一个Page对象&#xff0c;并保存到本地线程ThreadLocal中&#xff0c;接下来&#xff0c;PageHelper会进入Mybatis的拦截器环节&#xff0c;…

MFC实现全屏功能

之前全屏都是参考&#xff1a; MFC单文档&#xff08;SDI&#xff09;全屏程序的实现 主要思路就是将各种菜单工具栏隐藏恢复。 随着MFC的升级&#xff0c;MFC框架本身就具备了全屏的功能。 微软有一个全屏实现类&#xff1a; CFullScreenImpl Class managing full-screen mod…

nn.RNN解析

以下是RNN的计算公式,t时刻的隐藏状态H(t)等于前一时刻隐藏状态H(t-1)乘以参数矩阵&#xff0c;再加t时刻的输入x(t)乘以参数矩阵&#xff0c;最后再通过激活函数&#xff0c;等到t时刻隐藏状态。 下图是输出input和初始化的隐藏状态&#xff0c;当参数batch_first True时候&…

运算符重载(五)

目录 const成员函数const对象不可以调用非const成员函数非const对象可以调用const成员函数const成员函数内不可以调用其它的非const成员函数非const成员函数内可以调用其它的const成员函 取地址及const取地址操作符重载const补充场景1场景2场景3场景4 const成员函数 将const修…

redis之RedisTemplate和StringRedisTemplate的区别

1.RedisTemplate和StringRedisTemplate的区别 StringRedisTemplate继承RedisTemplate 两者的数据是不共通的&#xff08;默认的序列化机制导致key不一样&#xff09; StringRedisTemplate默认采用的是String的序列化策略 RedisTemplate默认采用的是JDK的序列化策略&#xf…

浅探 Windows 上获取磁盘信息的几种方式(一)

获取磁盘信息是一个常见需求&#xff0c;如检查磁盘预留空间&#xff0c;开发磁盘碎片整理工具&#xff0c;系统性能优化等工具等。 Windows 为此提供了各种接口&#xff0c;今天我们主要讲讲常用相关的三个API &#xff1a; GetDiskFreeSpaceGetDiskFreeSpaceExGetDiskSpaceI…

通信综合—8.通信网络安全

一、信息系统安全概述 1.信息系统的构成和分类 信息系统是将用于收集、处理、存储和传播信息的部件组织在一起而成的相关联的整体&#xff0c;般是由计算机硬件、网络和通信设备、计算机软件、信息资源和信息用户组成。它是以处理信息流为目的的人机一体化系统。信息系统主要…

语言的艺术:探秘基于GPT模型的文本生成与优化之美

语言的艺术&#xff1a;探秘基于GPT模型的文本生成与优化之美 在人工智能蓬勃发展的今天&#xff0c;语言模型如同文字艺术的魔术师&#xff0c;赋予了计算机以“书写”的能力。基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型的文本生成技术&#xf…

微服务篇-深入了解 XA 模式与 AT 模式、分布式事务(部署 TC 服务、微服务集成 Seata )

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 分布式事务 1.1 认识 Seata 2.0 部署 TC 服务 2.1 准备数据库表 2.2 准备配置文件 2.3 Docker 部署 3.0 微服务集成 Seata 3.1 引入依赖 3.2 改造配置 3.3 添加数…

王道考研编程题总结

我还在完善中&#xff0c;边复习边完善&#xff08;这个只是根据我自身总结的&#xff09; 一、 线性表 1. 结构体 #define MaxSize 40 typedef struct{ElemType data[MaxSize]&#xff1b;int length; }SqList 2. 编程题 1. 删除最小值 题意 &#xff1a;从顺序表中删除…

原生html+css+ajax实现二级下拉选择的增删改及树形结构列出

<?php $db_host localhost; $db_user info_chalide; $db_pass j8c2rRr2RnA; $db_name info_chalide; /* 数据库结构SQL CREATE TABLE categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, parent_id INT DEFAULT 0 ); */ try { $pdo new PD…

微信小程序介绍-以及写项目流程(重要)

前言&#xff1a;本篇文章介绍微信小程序以及项目介绍&#xff1a; 文章介绍&#xff1a;介绍了微信小程序常用的指令、组件、api。tips&#xff1a;最好按照官方文档来进行学习&#xff0c;大致可以我的目录来学习&#xff0c;对于写项目是没有问题的 微信小程序官方文档https…