【机器学习】利用线性回归预测披萨价格

目录

前言

一、绘制散点图

二、数据准备

三、一元线性回归模型训练

四、一元线性回归模型评估

总结


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

机器学习中的一元线性回归问题是指预测一个因变量(响应变量)和一个自变量(特征变量)之间的线性关系。具体地说,给定一个包含自变量和因变量的数据集,我们可以通过训练一个线性回归模型来学习这种关系,并利用该模型来进行预测或者推断。

在这里,我们简单介绍一下在一元线性回归中的一些关键术语和流程:

特征:在一元线性回归中,我们只有一个特征(或自变量),它是用来预测因变量的变量。
标签:标签是我们的目标输出(或因变量),它是由模型来预测的值。
模型:模型就是训练过程中学到的函数,它将给定的自变量映射到因变量的预测值。
训练集:训练集是用来训练模型的数据集。我们通过输入自变量 x 的值和对应的因变量 y 值来训练(拟合)用于学习的模型。
测试集:测试集是用来测试模型预测准确度的数据集。我们在测试集上输入自变量 x 的值,然后通过模型预测其对应的因变量 y 值,并将其与测试集中真实的因变量 y 值进行比较。
均方误差(MSE):MSE 是在评估回归问题模型性能时常用的指标之一,它是预测值与实际值之间差异的平方的均值。
决定系数(R2):决定系数是一个用来衡量模型对数据的拟合程度好坏的指标,它的值介于 0 和 1 之间。R2 越接近 1,表示模型对数据的拟合程度越好,反之则越差。


一、绘制散点图

import matplotlib.pyplot as plt
from pylab import mpl   # 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]   # 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

mpl.rcParams 是一个全局配置字典,用于设置 matplotlib 的默认参数。我们将字体设置为 SimHei,以支持显示中文字体,并且设置 axes.unicode_minus 为 False,以解决负号显示的问题。

# 0.准备数据
x = [225.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,207.83,342.75,147.9,53.06,224.72,29.51,21.61,483.21,245.25,399.25,343.35]
y = [196.63,203.88,210.75,372.74,202.41,247.61,24.9,239.34,140.32,104.15,176.84,288.23,128.79,49.64,191.74,33.1,30.74,400.02,205.35,330.64,283.45]
# 1.创建画布
plt.figure(figsize=(20, 8), dpi=100)
# 2绘制图像
plt.scatter(x, y)
# 3.图像显示
plt.show()

我们定义了两个列表 x 和 y,用来存储披萨的价格 x 和销量 y 的数据。接着使用 matplotlib 库来创建一个大小为 20*8,dpi 为 100 的画布,并使用 scatter 函数在画布上绘制 x 和 y 的散点图。

x=[1, 2, 3, 4, 5]
y=[1, 3, 7, 8, 11]
plt.title(u"散点图-折线图-Filotimo")
plt.plot(x, y, "b-")    # 绘制蓝色折线
plt.plot(x, y, "r*")    # 绘制红色星形散点图
plt.show()

在这段代码中,我们重新定义了新的 x 和 y 列表,然后使用 plot 函数在画布上绘制了散点图和折线图。

二、数据准备

X_train = [[6], [8], [10], [14], [18]] # 披萨直径
y_train = [[7], [9], [13], [17.5], [18]] # 披萨价格

我们定义了训练数据集 X_train 和 y_train,用来表示不同直径的披萨对应的价格。X_train 包含了披萨的直径,而 y_train 包含了给定直径的披萨价格。

plt.figure()
plt.plot(X_train, y_train, 'r*', markersize=10)
plt.title('披萨直径与价格的散点图')
plt.xlabel('直径(英寸)')
plt.ylabel('价格(美元)')
plt.axis([0, 25, 0, 25])
plt.grid(True)
plt.savefig('scatter_data.png')
plt.show()

我们创建了一个新的空白画布,并在画布上绘制了 X_train 和 y_train 的散点图。其中,‘r*’ 表示散点图用红色星形来表示,markersize=10 表示散点的大小为 10。

三、一元线性回归模型训练

from sklearn.linear_model import LinearRegression
model = LinearRegression();
model.fit(X_train,y_train);
y_train_pred = model.predict(X_train);
print('模型的表达式为: y = %0.3f * x + %0.3f' % (model.coef_[0][0], model.intercept_[0]));

我们通过导入 LinearRegression 类来引入线性回归模型,使用 LinearRegression() 创建一个名为 model 的线性回归模型对象,使用 fit() 方法将训练数据集 X_train 和 y_train 传入模型,以拟合数据集,使用 predict() 方法对训练数据集 X_train 进行预测,得到预测结果 y_train_pred,使用 coef_ 和 intercept_ 属性来获取模型的系数和截距。

y_train_pred

plt.figure()
plt.plot(X_train, y_train,'r*',markersize=10)
plt.plot(X_train, y_train_pred, 'b')  # 显示线性回归模型的直线
plt.title('披萨直径与价格的关系')
plt.xlabel('直径diameter (英寸)')
plt.ylabel('价格price (美元)')
plt.axis([0, 25, 0, 25])
plt.grid(True)
plt.savefig('regression_line.png')
plt.show()

使用 plt.figure()创建一个新的空白画布,使用 plt.plot() 方法绘制散点图,将训练数据集 X_train 和 y_train 以红色星形的形式绘制出来,将 X_train 和线性回归模型对训练数据集的预测结果 y_train_pred 以蓝色直线的形式绘制出来。

四、一元线性回归模型评估

while True:x_pre = input("请输入单个披萨的直径(输入q退出):")if x_pre == 'q':breakelse:x_prel = [[float(x_pre)]]y_pre = model.predict(x_prel)print('预测 {0} 英寸匹萨价格为: ${1:.2f}'.format(x_pre, y_pre[0][0]))
print('\n')

我们使用了一个循环,允许用户输入单个披萨的直径,并使用训练好的模型进行价格预测。

from sklearn.metrics import mean_squared_error
MSE_train = mean_squared_error(y_train, y_train_pred)  # 均方误差MSE
R2_score_train = model.score(X_train, y_train)  # 决定系数R2
print("一元回归模型的训练集的MSE: %0.3f,决定系数R^2: %0.3f" % (MSE_train, R2_score_train))

我们使用了sklearn.metrics模块中的mean_squared_error函数来计算训练集的均方误差(MSE),并使用模型的score方法计算训练集的决定系数(R2)。

X_test = [[8], [9],[11], [16], [12]]
y_test = [[11], [8.5], [15], [18], [14]]
y_test_pred = model.predict(X_test)
MSE_test = mean_squared_error(y_test, y_test_pred)
R2_score_test = model.score(X_test, y_test)
print("一元回归模型测试集的MSE: %0.3f,决定系数R^2: %0.3f" % (MSE_test, R2_score_test))
print('\n')

使用之前训练好的模型 model 对测试集的特征数据进行预测,得到预测结果 y_test_pred。

使用 mean_squared_error 函数计算测试集的均方误差(MSE),将实际的测试集标签 y_test 和模型对测试集的预测结果 y_test_pred 作为输入参数。

使用模型的 score 方法计算测试集的决定系数(R2),将测试集特征数据 X_test 和测试集标签 y_test 作为输入参数。


总结

我们首先收集了一组包括披萨尺寸和价格的数据样本。通过查看数据的特征和分布情况,我们发现披萨尺寸与价格之间呈现出一定的线性关系。然后,我们使用收集到的数据构建了一个线性回归模型。

模型的自变量是披萨的尺寸,因变量是披萨的价格。我们将数据集分为训练集和测试集,并使用训练集对模型进行了训练。在训练过程中,我们使用了均方误差(Mean Squared Error)作为评估指标来衡量模型的拟合程度。

经过训练后,我们对模型进行了评估。通过将测试集中的披萨尺寸输入模型,我们得到了相应的预测价格,并将其与真实价格进行对比,我们发现模型的预测结果与实际价格的差距比较小,表明模型对于预测披萨价格具有一定的准确性。                                 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux查询指定时间点段日志Linux查询指定文件

Linux服务器高效查询日志查询文件 Ⅰ、常用几种日志查询语法Ⅱ、常用几种查询语法 Ⅰ、常用几种日志查询语法 #查询某日志前xx行日志 head -n 行数 日志文件名 #查询某日志后xx行日志 tail -n 行数 日志文件名 #查询固定时间点日志(前提是这个时间点确实有日志输出…

基于javaweb实现的实践教学基地管理系统

一、系统架构 前端:html | js | css | bootstrap 后端:spring | springmvc | mybatis-plus 环境:jdk1.8 | mysql8 | tomcat | maven 二、代码及数据库 三、功能介绍 01. web-首页1 02. web-首页2 03. web-首页3 04. web-首页4 05. 管…

代码随想录27期|Python|Day15|二叉树|层序遍历|对称二叉树|翻转二叉树

本文图片来源:代码随想录 层序遍历(图论中的广度优先遍历) 这一部分有10道题,全部可以套用相同的层序遍历方法,但是需要在每一层进行处理或者修改。 102. 二叉树的层序遍历 - 力扣(LeetCode) 层…

集简云 x 零售企业丨快速集成有赞商城和微盛企微管家,实现私域运营自动化

客户介绍 某公司是一家知名的饮料厂商,自1998年成立以来,一直致力于研发和生产各种热门饮品,如果汁、碳酸饮料、矿泉水等。因其独特的口感和健康的品质深受消费者的喜爱。企业拥有多个知名品牌,享有极高的品牌知名度和市场份额。该…

jsp文件引用的css修改后刷新不生效问题

问题 在对 JavaWeb 项目修改的过程中,发现修改了 jsp 文件引入的 css 文件的代码后页面的样式没有更新的问题。 原因 导致这个问题的原因可能是因为浏览器缓存的问题。 解决方法 下面介绍两种解决方法,供大家参考: 1、给 link 标签的 c…

持续集成交付CICD:CentOS 7 安装 Nexus 3.63

目录 一、实验 1.CentOS 7 安装Nexus3.63 二、问题 1.安装Nexus报错 2.Nexus启动停止相关命令 一、实验 1.CentOS 7 安装Nexus3.63 (1)当前操作系统版本&JDK版本 cat /etc/redhat-releasejava -version(2)下载Nexus新…

椋鸟C语言笔记#26:数据在内存中的存储(大小端字节序)、浮点数的存储(IEEE754)

萌新的学习笔记,写错了恳请斧正。 目录 大小端字节序 什么是大小端 写一个判断大小端的程序 浮点数在内存中的存储(IEEE 754规则) 引入 存储规则解释 读取规则解释 1.阶码不全为0或全为1(规格化数) 2.阶码全为…

SQLMAP的使用(rails 为例)

1.启动一个项目&#xff0c;例如rails学习的项目&#xff0c;修改config/database.yml&#xff0c; 假设来一个接口&#xfeff; class YourModel::YourController < ApplicationController def test_sqlisql "select * from your_table_name where id " par…

亿欧网首届“元创·灵镜”科技艺术节精彩纷呈,实在智能AI Agent智能体展现硬核科技图景

12月4日-10日&#xff0c;持续一周的首届“元创灵镜”科技艺术节在海南陵水香水湾拉开帷幕&#xff0c;虚实交互创造出的“海岛之镜”开幕式呈现出既真实又虚幻的未来感&#xff0c;融入前沿科技元素的艺术装置作品在“虚实之镜&自然生长”科技艺术展诠释着浪漫想象&#x…

VS2022 将项目打包,导出为exe运行

我有一个在 VS2022 上开发的程序&#xff0c;基于.net 6框架, 想打包成 .exe程序&#xff0c;以在另一个没有安装VS的机器上运行&#xff0c;另一个机器是Win7系统&#xff0c;上面安装了.net 6框架。 虽然网上很多教程&#xff0c;需要安装Project Installer&#xff0c;配置A…

用23种设计模式打造一个cocos creator的游戏框架----(十二)状态模式

1、模式标准 模式名称&#xff1a;状态模式 模式分类&#xff1a;行为型 模式意图&#xff1a;允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构图&#xff1a; 适用于&#xff1a; 1、一个对象的行为决定于它的状态&#xff0c;并且它必须…

CommonJs模块化实现原理ES Module模块化原理

CommonJs模块化实现原理 首先看一个案例 初始化项目 npm init npm i webpack -D目录结构如下&#xff1a; webpack.config.js const path require("path"); module.exports {mode: "development",entry: "./src/index.js",output: {path: p…

2019年第八届数学建模国际赛小美赛C题预测通过拥堵路段所需的时间解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 C题 预测通过拥堵路段所需的时间 原题再现&#xff1a; 在导航软件中&#xff0c;行程时间的估计往往是一个重要的功能。现有的导航软件往往通过出租车或安装了该软件的车辆获取实时GPS数据来确定当前的路况。在交通拥堵严重的情况下&#…

安装LLaMA-Factory微调chatglm3,修改自我认知

安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 单卡训练&#xff0c; CUDA_VISIBLE_DEVICES0 python src/train_web.py…

过拟合与欠拟合

一、模型选择 1、问题导入 2、训练误差与泛化误差 3、验证数据集和测试数据集 4、K-折交叉验证 一般在没有足够多数据时使用。 二、过拟合与欠拟合 1、过拟合 过拟合的定义&#xff1a; 当学习器把训练样本学的“太好”了的时候&#xff0c;很可能已经把训练样本自身的一些特…

Navicat16 无限试用 亲测有效

Navicat16 无限试用 亲测有效 亲测有效&#xff01;&#xff01;&#xff01; 吐槽下&#xff0c;有的用不了&#xff0c;有的是图片&#xff0c;更甚者还有收费的&#xff0c;6的一批 粘贴下面的代码&#xff0c;保存到桌面&#xff0c;命名为 trial-navicat16.bat echo off…

探索GameFi:区块链与游戏的未来融合

在过去的几年里&#xff0c;区块链技术逐渐渗透到各个领域&#xff0c;为不同行业带来了前所未有的变革。其中&#xff0c;游戏行业成为了一个引人注目的焦点&#xff0c;而这种结合被称为GameFi&#xff0c;即游戏金融。GameFi不仅仅是一个概念&#xff0c;更是一场区块链和游…

宏景eHR SQL 注入漏洞复现(CVE-2023-6655)

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR 中发现了一种被分类为关键的漏洞,该漏洞影响了Login Interface组件中/w_selfservice/oauthservlet/%2e../.%2e/genera…

关于“Python”的核心知识点整理大全19

目录 ​编辑 8.6.4 使用 as 给模块指定别名 8.6.5 导入模块中的所有函数 8.7 函数编写指南 8.8 小结 第9章 类 9.1 创建和使用类 9.1.1 创建 Dog 类 dog.py 1. 方法__init__() 2. 在Python 2.7中创建类 9.1.2 根据类创建实例 1. 访问属性 2. 调用方法 3. 创建多…

到底什么是DevOps

DevOps不是一组工具&#xff0c;也不是一个特定的岗位。在我看来DevOps更像是一种软件开发文化&#xff0c;一种实现快速交付能力的手段。 DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理&#xff0c;从而更快、更频繁地交付更稳定的…