我的编程空间,编程开发者的网络收藏夹
学习永远不晚

机器学习实验——单变量线性回归(披萨价格预测问题)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

机器学习实验——单变量线性回归(披萨价格预测问题)

实验内容

假设某披萨店的披萨价格和披萨直径之间有下列数据关系:

训练样本直径(英寸)价格(美元)
167
289
31013
41417.5
51818

根据上面的训练数据,预测12英寸的披萨的可能售价。
1、直径为自变量X,价格为因变量y,画出二者的散点图,并给出结论。
2、根据现有的训练数据求线性回归模型,并画出拟合直线,给出拟合直线方程。
3、预测12英寸披萨的价格。
4、评价模型的准确率,分析模型预测结果
注:

测试数据:
训练样本直径(英寸)价格(美元)
188.5
2911
31112
41215
51618

实验内容

一、首先进行绘制散点图,绘制散点图我们使用matplotlib.pyplot库,直径、价格分别为自变量x,y,并且设置所画散点图的属性。

代码:
import matplotlib.pyplot as pltdata_x = [[6], [8], [10], [14], [18]]data_y = [[7], [9], [13], [17.5], [18]]plt.title("Pizza Price vs Diameter")  # 设置标题名称plt.xlim(0, 25)  # 设置x轴坐标范围plt.ylim(0, 25)  # 设置y轴坐标范围plt.xlabel('Diameter') # 设置x轴标题plt.ylabel('Price')  # 设置y轴标题plt.plot(data_x, data_y, 'k.') #绘制散点图plt.show()
运行结果:在这里插入图片描述

注:

plt.plot(data_x, data_y, 'k.')

'k.'为图形符号以及颜色风格的设置,现给出常用部分速查表:

characterdescriptioncharacterdescription
‘.’点标记‘k’黑色
‘-’实线‘g’绿色
‘–’虚线‘r’红色
‘-.’点划线‘b’蓝色
‘:’实点线‘y’黄色

二、使用sklearn.linear_model.LinearRegression对象进行拟合,首先创建一个线性回归对象,使用fit方法进行训练模型,再使用intercept_``lin_reg.coef_获得所得拟合方程的截距与斜率。为了方便绘制拟合方程图像,创建一个二位列表(data_x2)方便将方程直线绘制范围为增加到[0,25],再使用predict函数进行预测出所对应的y值,最后使用plot函数绘制拟合方程。

代码:
data_x2 = [[0], [10], [15], [25]]model = linear_model.LinearRegression()model.fit(data_x, data_y)intercept = str(model.intercept_[0])[:4]coef = str(model.coef_[0][0])[:4]print("截距为:" + intercept)print("斜率为:" + coef)print("拟合直线方程为:" + "y=" + coef + "x+" + intercept)data_y2 = model.predict(data_x2)plt.plot(data_x2, data_y2, '-')plt.show()
运行结果:

在这里插入图片描述
在这里插入图片描述

看完代码的小伙伴们可能会有疑问为什么会出现这样的代码

intercept = str(model.intercept_[0])[:4]coef = str(model.coef_[0][0])[:4]

其实不难理解,我们先输出一下'model.intercept_' 'model.coef_'的输出结果:
在这里插入图片描述
是的,你没看错,'model.intercept_'输出的数据是一个列表,'model.coef_'更是一个二位列表,而题干要求我们输出拟合方程,如果截距和斜率居然用列表的形式表示出来,那岂不是成了四不像!所以我先将他们转化成字符串,最后保留小数点后两位数字。

三、在第二步我们已经通过model对象训练出模型,预测12英寸披萨的价格那就是再简单不过的事情了,我们只需要使用predict方法直接预测!

代码:
piece = str(model.predict([[12]])[0][0])[:5]print("预测12英寸披萨的价格为:" + piece)
运行结果:

在这里插入图片描述
别再问我'str(model.predict([[12]])[0][0])[:5]'这是什么意思,往上翻!!!!

四、第四步就是考察你之前是否明白之前的所讲内容,话不多说,首先传入测试数据,画出散点图,使用之前的训练模型进行数据预测,最后使用model.score方法对模型准确率进行计算。

总代码:

import matplotlib.pyplot as pltfrom sklearn import linear_modeldef run_plt():    plt.rcParams['font.sans-serif'] = ['SimHei'] # 标题中文不报错    plt.title("Pizza Price vs Diameter")    plt.xlim(0, 25)    plt.ylim(0, 25)    plt.xlabel('Diameter')    plt.ylabel('Price')    return pltif __name__ == "__main__":    # 题目一    plt = run_plt()    data_x = [[6], [8], [10], [14], [18]]    data_y = [[7], [9], [13], [17.5], [18]]    plt.plot(data_x, data_y, 'k.')    plt.show()    # 题目二    plt = run_plt()    plt.plot(data_x, data_y, 'k.')    data_x2 = [[0], [10], [15], [25]]    model = linear_model.LinearRegression()    model.fit(data_x, data_y)    print("截距为:" + str(model.intercept_[0])[:4])    print("斜率为:" + str(model.coef_[0][0])[:4])    data_y2 = model.predict(data_x2)    plt.plot(data_x2, data_y2, '-')    plt.show()    # 题目三    piece = str(model.predict([[12]])[0][0])[:5]    print("预测12英寸披萨的价格为:" + piece)    # 题目四    data_x_test = [[8], [9], [11], [12], [16]]    data_y_test = [[8.5], [11], [12], [15], [18]]    data_x2_test = [[6], [11], [14], [18]]    plt = run_plt()    plt.plot(data_x, data_y, 'k.')    plt.plot(data_x_test, data_y_test, 'r.')    data_y2_test = model.predict(data_x2_test)    plt.plot(data_x2_test, data_y2_test, '-')    plt.show()    # 计算模型准确率    print(model.score(data_x_test, data_y_test))

结果图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

好啦,到这里这个实验就完成了,这是我第一次写博客,写的不好的地方请大家多多指教,对了,未来cust的学弟学妹们,你们的学长呕心沥血地写这个博客不是为了让你们“借鉴”的哦,学长的初衷是为了你们少走弯路哦!

来源地址:https://blog.csdn.net/weixin_53707859/article/details/127351033

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

机器学习实验——单变量线性回归(披萨价格预测问题)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录