【发布时间】:2015-02-23 03:54:34
【问题描述】:
我有一个后续问题:How to normalize with PCA and scikit-learn。
我正在创建一个情绪检测系统,我现在要做的是:
- 根据所有情绪拆分数据(将数据分布到多个子集)。
- 将所有数据加在一起(多个子集为一组)
- 获取组合数据的 PCA 参数(self.pca = RandomizedPCA(n_components=self.n_components, whiten=True).fit(self.data))
- 根据情绪(每个子集),将 PCA 应用于该情绪(子集)的数据。
我应该在以下步骤进行标准化:第 2 步)标准化所有组合数据,第 4 步)标准化子集。
编辑
我想知道所有数据的归一化和子集的归一化是否相同。现在,当我尝试根据@BartoszKP 的建议简化示例时,我发现我如何理解规范化是错误的。两种情况下的标准化工作方式相同,所以这是一种有效的方法,对吧? (见代码)
from sklearn.preprocessing import normalize
from sklearn.decomposition import RandomizedPCA
import numpy as np
data_1 = np.array(([52, 254], [4, 128]), dtype='f')
data_2 = np.array(([39, 213], [123, 7]), dtype='f')
data_combined = np.vstack((data_1, data_2))
#print(data_combined)
"""
Output
[[ 52. 254.]
[ 4. 128.]
[ 39. 213.]
[ 123. 7.]]
"""
#Normalize all data
data_norm = normalize(data_combined)
print(data_norm)
"""
[[ 0.20056452 0.97968054]
[ 0.03123475 0.99951208]
[ 0.18010448 0.98364753]
[ 0.99838448 0.05681863]]
"""
pca = RandomizedPCA(n_components=20, whiten=True)
pca.fit(data_norm)
#Normalize subset of data
data_1_norm = normalize(data_1)
print(data_1_norm)
"""
[[ 0.20056452 0.97968054]
[ 0.03123475 0.99951208]]
"""
pca.transform(data_1_norm)
【问题讨论】:
标签: python scikit-learn pca