首页 > 其他分享 >深度学习—线性回归预测销售额

深度学习—线性回归预测销售额

时间:2023-08-06 21:31:55浏览次数:37  
标签:分析 loss plt 回归 print 销售额 深度 线性

(深度学习—线性回归预测销售额)

前提

进行程序训练之前,需已经成功安装好深度学习环境 若没有安装环境,可以参考:深度学习环境安装教程,进行环境安装。

一、 简介

机器学习是人工智能的核心,是使计算机具有智能的根本途径。线性回归模型是机器学习中最简单、最基础的一类有监督学习模型,却是很多复杂模型的基础。 可以用线性回归模型来预测销售额。

1.1 回归分析

回归分析是一个来自统计学的概念。回归分析是指一种预测性的建模技术,主要是研究自变量和因变量的关系。通常使用线或曲线来拟合数据点,然后研究如何使曲线到数据点的距离差异最小。 线性回归模型是机器学习中最简单、最基础的一类有监督学习模型,虽然简单,却是很多复杂模型的基础,非常重要。 线性回归要处理的一类问题是:给定一组输入样本,和每个样本对应的目标值,需要在某一损失准则下,找到(学习到)目标值和输入值的函数关系,这样,当有一个新的样本到达时,可以预测其对应的目标值是多少。 线性回归和线性分类很相似,但不同的是,线性回归的目标值是连续变量,线性分类的目标值是离散变量。

二、 机器学习——线性回归

2.1 简介

在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 回归分析按照涉及的变量的多少,分为一元回归和多元回归分析; 按照因变量的多少,可分为简单回归分析和多重回归分析; 按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。 在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。 线性回归是回归分析的一种。假设目标值(因变量)与特征值(自变量)之间线性相关(即满足一个多元一次方程,如: f(x)=w1 x1+⋯+wn xn+b (2-1) 然后构建损失函数。 最后通过令损失函数最小来确定参数。(这是关键的一步)。

2.2 一元线性回归

2.2.1 概念

一元线性回归(Unary linear regression):当线性回归的自变量只有一个的时候则该线性回归就为一元线性回归。而一元线性回归是线性回归的一个特例,许多线性回归都可以用一元线性回归方程简化。而往往一个现实事物会受多个因素的影响,但当一个因素起到主导(决定性)作用的时候,那么就可以使用一元线性回归,例如决定雪糕的销售量的主要因素是温度,决定商品的价格的主导因素是供给。

2.2.2 模型的设置

1、意义检验:就是根据模型中各个参数的含义,分析各参数的值是否与分析对象的含义相符; 2、回归标准差检验; 3、拟合优度检验; 4、回归系数的显著性检验

2.2.3 举例说明

散点图 散点图 计算代码 在这里插入图片描述

2.3 多元线性回归

2.3.1 概念

多元线性回归(Multiple Linear Regression):简单来说就是与一元线性回归不一样了,自变量不再是一个了,而是两个及两个以上的变量。多元线性回归分析是为了分析多个变量导致的现实事物的变化。 因为现实中的许多问题往往会受到多个因素而并非单个因素的影响,所以在分析这类问题的时候,一元线性回归就显得有些不足了,那么这个时候,我们就需要采用多元线性回归分析。

2.3.2 模型

y=b0+b1 x1+b2 x2+⋯+bk xk+e b0为常数项,b1,b2…bk为回归系数,b1为x2…xk固定时,x1每增加一个单位对y的效应,即 x1对y的偏回归系数,同理,b2为x1,x3…xk固定时, x2每增加一个单位对y的效应,即x2对y的偏回归系数……

三、 通过线性回归预测销售额

3.1 数据来源

选择统计过的advertising数据集 数据集

3.2 数据处理

通过散点图把数据给可视化 散点图代码 散点图代码 根据在最小二乘法中,均方误差函数的数学表达式,刻画的是每个点的y和拟合出来的直线y撇的差距: 均方误差函数(MSE)代码如下: 均方差函数代码 计算初始情况下的cost,进行100次学习之后,最终确定线性方程: 算法代码如下: 算法代码 线性回归结果图 线性回归结果图 检验损失代码 检验损失代码 运行结果如下图所示: 运行结果如下图所示: 源码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def loss_function(X,y,w,b):
    loss=w*X+b-y
    cost=np.sum(loss**2)/(2*len(X))
    return cost
def gradient(X,y,w,b):
    for i in range(iter):
        print(i)
        print("现在损失是:",loss_function(X,y,w,b))
        loss_history.append(loss_function(X,y,w,b))
        loss=w*X+b-y
        derivative_w=X.T.dot(loss)/len(X)
        derivative_b=sum(loss)*1/len(X)
        print("权重导数:",derivative_w)
        print("偏置导数:",derivative_b)
        w=w-lr*derivative_w 
        print("现在w:",w)
        b=b-lr*derivative_b 
        print("现在b:",b)
    return w,b
adv=pd.read_csv("D:\\浏览器下载\\advertising.csv")
X=np.array(adv.TV)
y=np.array(adv.sales)
X_train=X.reshape(-1,1)
y_train=y.reshape(-1,1)
X_test=100
w=0.1
b=1
iter=100
lr=0.000002
loss_history=[]
plt.scatter(X_train,y_train)
w1,b1=gradient(X,y,w,b)
plt.plot(X,w1*X+b1)
print("最后w,b 是:",w1,b1)
print(w1*X_test+b1)
plt.show()
plt.plot(loss_history,'g--',label='Loss Curve')
plt.xlabel('Iterations') 
plt.ylabel('Loss')
plt.legend() 
plt.show()

标签:分析,loss,plt,回归,print,销售额,深度,线性
From: https://blog.51cto.com/u_16202928/6986977

相关文章

  • 线性基(异或)
    线性基目录线性基定义:线性相关和线性无关基线性基的维护基本操作在线段树分治中的维护线性基的应用(代码模板在此)分析:代码:注:常用于异或定义:线性相关和线性无关平面向量基本定理:平面上两个不共线向量可以表示出该平面上任意一个向量这个定理可以拓展到n维有了这个,就能轻松理......
  • 线性基
    线性基用于解决异或相关的问题。如何构造线性基?设$p$为线性基的集合。插入一个数$x$时,枚举其最高位$i$,若$p_i$不存在,令$p_i=x$并退出,否则令$x=x:xor:p_x$。voidins(llx){ for(lli=SIZE-1;i>=0;i--) { if(!(x>>i))continue; if(!p......
  • 深度 Q 网络(deep Q network,DQN)原理&实现
    深度Q网络(deepQnetwork,DQN)原理&实现1Q-Learning算法1.1算法过程Q-learning是一种用于解决强化学习问题的无模型算法。强化学习是一种让智能体学习如何在环境中采取行动以最大化某种累积奖励的机器学习方法。在Q-learning中,智能体根据称为Q-values的函数来选择行动。Q-v......
  • AlexNet深度卷积神经网络——pytorch版
    importtorchfromtorchimportnnfromd2limporttorchasd2lnet=nn.Sequential(#(224-11+1+2)/4=54nn.Conv2d(1,96,kernel_size=11,stride=4,padding=1),nn.ReLU(),#(54-3+1)/2=26nn.MaxPool2d(kernel_size=3,stride=2),#(26+4-5+1)=26......
  • 深度学习编译器前端技术概述
    AI编译器在前端经常会做一些静态分析,方便在前端做一些优化:自动微分等。中间表示(IntermediateRepresentation,IR)IR是编译器用于表示源代码的数据结构或代码,是程序编译过程中介于源语言和目标语言之间的程序表示。几乎所有的编译器都需要某种形式的中间表示,来对被分析、转换......
  • 002-深度学习数学基础(神经网络、梯度下降、损失函数)
    0.前言人工智能可以归结于一句话:针对特定的任务,找出合适的数学表达式,然后一直优化表达式,直到这个表达式可以用来预测未来。针对特定的任务:首先我们需要知道的是,人工智能其实就是为了让计算机看起来像人一样智能,为什么这么说呢?举一个人工智能的例子:我们人看到一个动物的图片,就......
  • 2、深度学习之张量和基本数据类型
    1、构建项目 2、编辑test2.py1importtorch2importnumpyasnp3importtensorflowastf4#1.pytorch张量5#pytorch中的张量和tensorflow的tensor是一样的,名字都一样6#pytorch中的张量也叫tensor7#tensor和numpy中的ndarray也是一个意思。只不......
  • 深度剖析JAVA 函数式接口
    一、什么是函数式接口:函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。可以有多个非抽象方法。为了避免别人在这个接口中增加......
  • 6.数据分析(1) --描述性统计量和线性回归(1)
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 论文解读:《利用生成性深度学习预测用于DNA编辑的设计者重组酶》》
    期刊:naturecommunications影响因子:16.6↓1.094中科院分区:1区摘要位点特异性酪氨酸型重组酶是基因组工程的有效工具,首个工程化变体已显示出治疗潜力。到目前为止,设计重组酶对新DNA靶位点选择性的适应主要是通过定向分子进化的迭代循环实现的。虽然有效,定向分子进化方法是费力和耗......