我简化了案件。
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import pandas as pd
data = pd.DataFrame([
[1., 1., 1.,],
[1., 1., 1.,],
[-1., -1., -1.,],
[-1., -1., -1.,],
])
x_std = StandardScaler().fit_transform(data)
print('x_std...', x_std)
pca = PCA(n_components=2)
y = pca.fit_transform(x_std)
print('y...', y)
结果是
x_std... [[ 1. 1. 1.]
[ 1. 1. 1.]
[-1. -1. -1.]
[-1. -1. -1.]]
y... [[ 1.73205081e+00 6.79869978e-17]
[ 1.73205081e+00 -2.26623326e-17]
[-1.73205081e+00 2.26623326e-17]
[-1.73205081e+00 2.26623326e-17]]
我期望第一和第二个原始数据(PC1,PC2)的值应该相同,但事实并非如此。
第二次试用,我将原始数据添加到数据中。
data = pd.DataFrame([
[1., 1., 1.,],
[1., 1., 1.,],
[1., 1., 1.,],
[-1., -1., -1.,],
[-1., -1., -1.,],
[-1., -1., -1.,],
])
x_std = StandardScaler().fit_transform(data)
print('x_std...', x_std)
pca = PCA(n_components=2)
y = pca.fit_transform(x_std)
print('y...', y)
结果是
x_std... [[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]
[-1. -1. -1.]
[-1. -1. -1.]
[-1. -1. -1.]]
y... [[ 1.73205081e+00 4.57971869e-16]
[ 1.73205081e+00 -9.15943738e-17]
[ 1.73205081e+00 -9.15943738e-17]
[-1.73205081e+00 9.15943738e-17]
[-1.73205081e+00 9.15943738e-17]
[-1.73205081e+00 9.15943738e-17]]
为什么原始的PC2值怪异?