莱芜市网站建设公司,网站搭建完手机访问,政务网站开发方案,建设集团有限公司网站首页目录
1、数据分析
2、pytorch直线拟合 1、数据分析
直线拟合的前提条件通常包括以下几点#xff1a;
存在线性关系#xff1a;这是进行直线拟合的基础#xff0c;数据点之间应该存在一种线性关系#xff0c;即数据的分布可以用直线来近似描述。这种线性关系可以是数据点…目录
1、数据分析
2、pytorch直线拟合 1、数据分析
直线拟合的前提条件通常包括以下几点
存在线性关系这是进行直线拟合的基础数据点之间应该存在一种线性关系即数据的分布可以用直线来近似描述。这种线性关系可以是数据点在直角坐标系上的分布趋势也可以是通过实验或观测得到的数据点之间的关系。
数据点之间的误差是随机的误差应该是随机的没有任何系统性的偏差并且符合随机误差的统计规律。这意味着数据点在拟合直线周围的分布应该是随机的而不是受到某种特定的规律或趋势的影响。
直线应符合数据点的总体趋势在拟合直线时应该尽可能地符合数据点的总体趋势而不是被一些异常值所影响。如果存在一些异常值它们不应该对拟合结果产生过大的影响。
数据点的数量应该足够多在进行直线拟合时需要足够多的数据点来保证拟合结果的准确性和可靠性。通常来说数据点的数量应该足够多以便涵盖各种情况并且能够反映出数据的真实分布情况。
数据的观测或实验过程是可靠的数据的观测或实验过程应该是可靠的这意味着数据的测量值应该是准确的并且没有受到某些特定因素的影响。如果数据的观测或实验过程存在偏差或误差那么直线拟合的结果也可能受到影响。
从散点图看出数据具有明显的线性关系本例不过多讨论数据是满足直线拟合的其它条件。
import torch
import matplotlib.pyplot as plt
xtorch.Tensor([1.4,5,11,16,21])
ytorch.Tensor([14.4,29.6,62,85,113.4])
plt.scatter(x.numpy(),y.numpy())
plt.show() 2、pytorch直线拟合
基于梯度下降法实现直线拟合。训练过程实际上是一种批量梯度下降Batch Gradient Descent这是因为每次更新参数时都使用了所有的数据。另外学习率 learning_rate 和训练轮数 epochs 是可以调整的超参数对模型的训练效果有很大影响。
import torch
import matplotlib.pyplot as plt
def Produce_X(x):x0torch.ones(x.numpy().size)Xtorch.stack((x,x0),dim1)return X
def train(epochs1,learning_rate0.01):for epoch in range(epochs):outputinputs.mv(w)loss(output-target).pow(2).sum()loss.backward()w.data-learning_rate*w.gradw.grad.zero_()if epoch%800:draw(output,loss)return w,loss
def draw(output,loss):plt.cla()plt.scatter(x.numpy(), y.numpy())plt.plot(x.numpy(),output.data.numpy(),r-,lw5)plt.text(5,20,loss%s % (loss.item()),fontdict{size:20,color:red})plt.pause(0.005)
if __name__ __main__:x torch.Tensor([1.4, 5, 11, 16, 21])y torch.Tensor([14.4, 29.6, 62, 85.5, 113.4])X Produce_X(x)inputs Xtarget yw torch.rand(2, requires_gradTrue)w,losstrain(10000,learning_rate1e-4)print(final loss:,loss.item())print(weigths:,w.data)plt.show()
final loss: 8.216197967529297
weigths: tensor([5.0817, 5.6201])