关于均值为0

来源:7-4 求数据的前n个主成分

qq_慕少1574511

2021-03-22

def demean(X):
return X-np.mean(X,axis=0) #均值变为0
X=demean(X)
老师您好,就是可以再讲讲这段代码到底是什么意思啊

写回答

1回答

liuyubobobo

2021-03-22

假设 X = 

[[1, 2],
 [3, 4],
 [5, 6]]

即有 3 个样本,两个特征。


np.mean(X,axis=0) 的结果是:

[3, 4]


即计算出了两个特征的平均值。(1 + 3 + 5) / 3 = 3;(2 + 4 + 6) / 3 = 4。


X - np.mean(X,axis=0) 用 X 的每一行和 [3, 4] 向减。结果是:

[[-2, -2],
 [0, 0],
 [2, 2]]


因为 [1, 2] - [3, 4] = [-2, -2];[3, 4] - [3, 4] = [0, 0], [5, 6] - [3, 4] = [2, 2]


现在,这个矩阵的每一列的均值为 0。所以这个过程把每个特征的均值变成了 0,叫做 demean。


P.S. 带入一组具体的简单的小数据,去看程序到底发生了什么,而不是对着代码生想,是非常重要的理解程序,对程序 debug 的方式:)


继续加油!:) 

1
1
qq_慕少1574511
非常感谢!
2021-03-22
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2454 问题

查看课程