← 返回首页
Pytorch与统计学方法
发表时间:2024-01-22 14:47:06
Pytorch与统计学方法

Pytorch与统计学方法。

1.统计学相关函数

实例:

import torch

a = torch.rand(2, 2)
print(a)
#求平均值
print(torch.mean(a))
#求和
print(torch.sum(a))
#乘积
print(torch.prod(a))

#在指定维度上求平均值
print(torch.mean(a, dim=0))
#在指定维度上求和
print(torch.sum(a, dim=0))
#在指定维度上求乘积
print(torch.prod(a, dim=0))
#求最大值的索引
print(torch.argmax(a, dim=0))
#求最小值的索引
print(torch.argmin(a, dim=0))
#求标准差
print(torch.std(a))
#求方差
print(torch.var(a))
#求中间值
print(torch.median(a))
#求众数值
print(torch.mode(a))

#求直方图
a = torch.rand(2, 2) * 10
print(a)
print(torch.histc(a, 6, 0, 0))

#求每个值的频数
a = torch.randint(0, 10, [10])
print(a)
print(torch.bincount(a))

#统计某一类别样本的个数

运行结果:

tensor([[0.1955, 0.3517],
        [0.6211, 0.1792]])
tensor(0.3369)
tensor(1.3475)
tensor(0.0077)
tensor([0.4083, 0.2655])
tensor([0.8166, 0.5310])
tensor([0.1214, 0.0630])
tensor([1, 0])
tensor([0, 1])
tensor(0.2048)
tensor(0.0419)
tensor(0.1955)
torch.return_types.mode(
values=tensor([0.1955, 0.1792]),
indices=tensor([0, 1]))
tensor([[4.7445, 0.7429],
        [9.7176, 3.7545]])
tensor([1., 0., 2., 0., 0., 1.])
tensor([6, 4, 6, 6, 6, 1, 8, 8, 6, 6])
tensor([0, 1, 0, 0, 1, 0, 6, 0, 2])

2.方差与标准差的区别

什么是方差。假设小明期末考试考了6门课,他的成绩分别是60,78,77,90,92,83。那么小明成绩的方差该怎么算呢?

我们需要先算出小明的平均成绩:

然后,分别用小明每一门课的成绩减去平均成绩,求出差的平方,再算出这些平方的平均值。即:

我们把这个结果就叫做方差。把它一般化, 假设有x_1、x_2...x_n一共n个数据,它们的均值是μ,那么方差就可以表示为:

那么方差有什么意义呢?它所表示的是数据的波动程度,更具体的说,它表示的是数据与均值之间的离散程度。方差越大,表明数据越分散,离均值的平均距离远;方差越小,表明数据大多集中在均值周围。

标准差就是方差开方得到的结果,即:

那这么做有什么意义呢?注意到,我们的方差是求了平方的,如果我们的数据是有单位的话,最后的结果将是单位的平方,对这个结果不是很好解释。比如上面小明成绩的方差是111,单位是“分”的平方。我们就会感到很奇怪。

将方差开方后,单位就变成了原来的单位,那么结果就很好解释了。可以得出,小明成绩的标准差约为10.5分。也就是说,小明的成绩与均值的差距平均在10.5分。

小结:

方差与标准差同样用来描述数据的离散程度,由于方差较标准差少了一次开方的运算,所以如果只是用来比较离散程度的情况下,我们可以直接使用方差。但由于方差是平方后的结果,所以在单位上与原来数据单位不一致,并不能直接进行运算。比如假设希望用样本的离散程度来圈定一个合理值范围的时候,就需要使用标准差参与计算。