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

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

目录

  • 逻辑回归理解
  • 损失函数
  • 代码
  • 练习
    • 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()


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


http://www.kler.cn/a/428039.html

相关文章:

  • 134.力扣刷题--加油站--滑动窗口
  • 【NLP251】意图识别 与 Seq2Seq
  • postgresql的用户、数据库和表
  • 解锁豆瓣高清海报:深度爬虫与requests进阶之路
  • 具身智能研究报告
  • MySQL中的读锁与写锁:概念与作用深度剖析
  • 基于Python Django的人脸识别上课考勤系统(附源码+部署+技术说明)
  • C++ day1——C++基本工具
  • Nginx限流实践-limit_req和limit_conn的使用说明
  • Apache-HertzBeat 开源监控默认口令登录
  • CoaXPress over Fiber HOST Bridge FPGA IP
  • ES6新增特性使用
  • 解决:Lombok 注解处理器报错
  • mac下载安装jdk
  • MongoDB语法及MongoTemplate用法
  • 基于LSTM的A股股票价格预测系统(torch) :从数据获取到模型训练的完整实现
  • 【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义
  • vue3的常用 Composition API有哪些?
  • 【HarmonyOS学习日志(12)】计算机网络之TCP/IP协议族(一)
  • 什么是纯虚函数?什么是抽象类?纯虚函数和抽象类在面向对象编程中的意义是什么?
  • Linux系统编程——超级详细讲解静态库、动态库的创建、打包和使用
  • JVM整理部分面试题
  • EasyNVR中HTTP-FLV协议无法播放怎么解决?
  • 浅谈Scala语言
  • 周记-2024年第48、第49周11.25-12.08:养儿方知父母恩
  • karmada-descheduler