【线性回归模型实战】

梳理步骤

1、获取数据集
2、选用线性回归模型 f ( x ) = w x + b f(x)=wx+b f(x)=wx+b
3、损失函数 ‘ l o s s = ( f ( x ) − y ) 2 = ( w x − y ) 2 ‘ `loss=(f(x)-y)^2=(wx-y)^2` loss=(f(x)y)2=(wxy)2
4、梯度下降求导更新参数
5、设置训练轮次
6、更新完参数的模型预测

开始

创建文件夹右键打开方式用pychorm打开,并且使用之前配置好的环境
现场配置下环境
打开anaconda prompt

keras环境

conda create -n keras python==3.8

输入y同意
看看是否创建了环境

(base) C:\Users\RD70>conda env list
# conda environments:
#
base                  *  D:\anaconda
keras                    D:\anaconda\envs\keras

进入该环境

(base) C:\Users\RD70>activate keras

(keras) C:\Users\RD70>
安装tensorflow

这里用了阿里云的源

pip install tensorflow==2.4.0 -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
安装keras
pip install keras==2.4.3 -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
安装接下来的东西,同上

numpy=1.19.5
pandas=1.3.5
matplotlib=3.4.2
sklearn=0.0
再验证下是否安装好了

conda list

pychorm里加载该环境

在这里插入图片描述等待它加载完
在这里插入图片描述

代码解析

# 定义数据集
# 定义数据集特征
x_data = [1,2,3]
# 定义数据集标签
y_data = [2,4,6]

# 初始化参数w
w = 1

# 定义线性回归模型
def forword(x):
    return x*w

# 定义损失函数
# 两个传参
def cost(xs,ys):
    costvalue = 0
    # for循环依次去取每组数据特征和它对应的标签,这里的zip函数是将每个x与之对应的y打包为成一个个元组,zip(xs, ys) 会将这两个列表中的元素一一对应起来
    for x,y in zip(xs,ys):
        y_pred = forword(x)
        costvalue +=(y_pred-y)**2
        #print("costvalue=",costvalue,"y_pred=",y_pred,"x=",x,"y=",y,"w=",w)
    ## 返回损失平均值,len函数是获取xs列表的数据长度
    return costvalue /len(xs)

# 定义梯度计算公式
def gradient(xs,ys):
    grad = 0
    for x, y in zip(xs, ys):
        # 求损失函数loss=(f(x)-y)^2=(wx-y)^2关于参数w的导数,并且将它用于梯度下降
        grad += 2 * x * (w * x - y)
        #print("grad",grad)
    return grad / len(xs)

for epoch in range(10):

    # 计算误差损失
    cost_val = cost(x_data,y_data)

    grad_val = gradient(x_data,y_data)
    # 这里学习率也很重要,太低了会导致一百轮跑不到损失最小
    w = w - 0.01 * grad_val
    #print("训练轮次",epoch,"w=",w,"loss",cost_val)

# 调用训练好的模型去推理y
print("100轮后w已经训练好了,此时我们用训练好的w进行推理,学习时间为4个小时的时候最终的得分为:", forword(4))

好,那代码流程是这样的,首先给了一个初w的值(这个w的值不一定能代表最好的匹配当前的数据集的参数),然后把数据集放进去,发现这个参数w放进去会有较大的代价损失,所以我们定义一个损失函数cost,也就是当前线性模型代入数据集特征后预测的标签与真实标签做差的平方,再将损失函数梯度下降来调整w,再把调整后的w放到模型函数代入数据集,计算损失函数
换句话说,通过梯度下降的方式,得到不断调整到代价函数无限趋近于0时的模型参数w

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值