线性回归

一.线性回归:

1.1线性回归

线性回归属于连续值类型的方法.

1.2例子:

以房屋价格预测进行实践

  1. 设房屋的面积为 x1 ,房龄为 x2 ,售出价格为 y
    在这里插入图片描述

  2. 在机器学习术语里,数据集被称为训练数据集(training data set)训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)

  3. 而在模型训练中,我们需要评估预测值与真实值之间的误差.我们取平方差函数来作为评估函数 在这里插入图片描述
    通常,我们用训练数据集中所有样本误差的平均来衡量模型预测的质量,即
    在这里插入图片描述
    所以 在模型里 我们 希望找出一组w1,w2,b 来使得损失值达到最小
    在这里插入图片描述

  4. 求解最优w1,w2,b 采用方法

    初始可以采用梯度下降,但是 需求的计算量较大,需要将所有的数据都代入进去进行运算,造成计算量过大.对算法优化 可以采取随机梯度下降 取部分的数据进行运算.先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch) B

    上述 |B| 代表每个小批量中的样本个数(批量大小,batch size)η 称作学习率(learning rate) 并取正数。

1.3.实践步骤

1.读取数据集

def data_iter(batch_size, features,labels):
	num_examples = len(features)
	indices = list(range(num_examples))
	random.shuffle(indices)
	for i in range(0,num_examples,batch_size):
		j = indices[i,min(i+batch_size,num_examples)]
		yield features.index_select(0,j),labels.index_select(0,j)

2.初始化参数

def init(num_inputs):
	w = torch.tensor(np.random.normal(0,0.01,size = (num_inputs,1)),dtype = torch.float32)
	b= torch.zeros(1,dtype = torch.float32)
	w.requires_grad_(requires_grad=True)
	b.requires_grad_(requires_grad=True)

3.定义线性模型

def Linear(X,w,b):
	return torch.mm(X,w)+b

4.定义损失函数

def loss(y_hat,y):
	return (y_hat-y.view(y_hat.size())) **2 /2

5.定义优化方法

def SGD(params,lr,batch_size)
	for param in params:
		param.data -= lr*params.grad()/batch_size

6.开始训练

def train(features,labels,w,b,lr,batch_size):
	for x,y in data_iter(batch_size,features,labels):
		y_hat = Linear(x,w,b)
		l = loss(y_hat,y).sum()
		l.backward()
		SGD([w,b],lr,batch_size)
		w.grad.data.zero_()
		b.grad.data.zero_()	

7.训练

lr = 0.01
batch_size =10
num_inputs = 2
w,b = init(num_inputs)
train(features,labels,w,b,lr,batch_size)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值