【发布时间】:2020-05-27 13:59:54
【问题描述】:
我正在使用sklearn.decomposition.PCA 为机器学习模型预处理一些训练数据。有 4095 个维度的 247 个数据点,使用 pandas 从 csv 文件导入。然后我缩放数据
training_data = StandardScaler().fit_transform(training[:,1:4096])
在调用PCA算法获取每个维度的方差之前,
pca = PCA(n_components)
pca.fit(training_data).
输出是一个长度为 247 的向量,但它的长度应该是 4095,这样我才能计算出每个维度的方差,而不是每个数据点的方差。
我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
test = np.array(pd.read_csv("testing.csv", sep=','))
training = np.array(pd.read_csv("training.csv", sep=','))
# ID Number = [0]
# features = [1:4096]
training_data = StandardScaler().fit_transform(training[:,1:4096])
test_data = StandardScaler().fit_transform(test[:,1:4096])
training_labels = training[:,4609]
pca = PCA()
pca.fit(training_data)
pca_variance = pca.explained_variance_.
我已经尝试对training_data 进行转置,但这并没有改变输出。我也尝试在PCA函数的参数中更改n_components,但坚持只能有247个维度。
这可能是一个愚蠢的问题,但我对这种数据处理非常陌生。谢谢。
【问题讨论】:
-
您的数据有问题。
print(training_data.shape)return 是什么意思? -
@seralouk 返回
(247, 4095)。 -
看我的回答干杯
标签: python scikit-learn pca decomposition