数据泛化
一些常见的统计方法
-
mean
:均值,对于一组数据来说,计算其均值可以直接使用np.mean
来进行计算,对于多维数据,numpy
引入了轴axis
的概念,其中,轴的起点从0
开始一直到n
,例如,在二维数据中,其中每一行代表一个样本,每一列代表一个特征(类似于csv
文件)
长,宽,高
x1 1,2,3
x2 1,4,5
x3 1,6,7
对于这样一组数据,用列表来表示就是
1 2 3 4
data = [x1, x2, x3] data = [[1,2,3], [1,4,5], [1,6,7]]
其中,按照
axis=0
的方式来计算均值,这里计算的就是长、宽、高 每个特征的均长、均宽、均高,按照axis = 1
来进行计算,也就是计算每一行的均值,也就是每一个样本的均值(看起来没有什么意义)1 2
mean1 = np.mean(data, axis=0) # 按照列进行计算 mean2 = np.mean(data, axis=1) # 按照行进行计算
下面所有的方法
var(方差),std(标准差)
等均可以按照不同的轴进行计算 -
var
:variance
,方差,不在叙述计算公式,可以直接使用np.var()
-
std
:Standard deviation
,可以根据方差得到,可以直接使用`np.std() -
np.round
:保留小数操作,例如,要对data
保留三位小数,可以表示为1
ans = np.round(data, 3)
min-max均值规化
公式为
$$ x’ = \frac{x-min}{max-min}$$
对于一组数据data
,可以这样计算
|
|
标准化
标准化可以把各个特征标准化为标准差为1,均值为0的正态分布
公式为
$$ x = \frac{x-\mu}{\sigma} $$
其中, $\mu$是均值,$\sigma$是标准差
|
|
总结
是否必须使用标准化方法?
- 算法需求:
- 某些算法(如距离-based的算法, K-means, K邻近)对特征尺度非常敏感,标准化几乎是必需的。
- 某些算法(如决策树、随机森林等)对特征尺度不敏感,标准化不是必需的。
- 数据特性:
- 如果特征的数值范围已经很接近,标准化的效果可能不明显。
- 如果特征的数值范围差异很大,标准化可以显著提升模型性能。
- 模型性能:
- 通过实验比较标准化前后的模型性能,可以决定是否需要标准化。