【发布时间】:2021-12-06 19:56:19
【问题描述】:
我有一个非常大的训练数据集。我的训练数据集包含 1050 个手势,每个手势包含 12,000 个数据点。向我们的机器学习模型提供如此多的数据点将导致性能非常缓慢和准确性低下。因此,我使用 PCA 从高维空间中去除不相关的特征,并将最重要的特征投影到低维子空间中,从而提高分类精度并减少计算时间。使用 PCA,我们将每个手势的 12,000 个数据点减少到 15 台 PC,而不会影响从数据中提取的信息。
将来,我想将我的机器学习模型存储到 Arduino 上。 Arduino 是一个小芯片,大约有 256KB 的存储空间。我用来拟合 PCA 的训练数据集的存储空间为 225MB,因此不可能。
有没有办法执行 PCA 并将其拟合到我的训练数据集,以便我将来可以在 Arduino 上转置我看不见的测试数据集,而不必将训练数据集存储到我的 Arduino 中进行拟合?
这是适合我的训练数据集的代码
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
transposed_normDF.columns = transposed_normDF.columns.map(str)
features = [str(i) for i in range(0,11999)]
x = transposed_normDF.loc[:, features].values
y = df.loc[:,['label']].values
pca = PCA(n_components=0.99)
principalComponents = pca.fit_transform(x)
pc = pca.explained_variance_ratio_.cumsum()
x1 = StandardScaler().fit_transform(principalComponents)
full_newdf = pd.DataFrame(data = x1
, columns = [f'pc_stdscaled_{i}' for i in range(len(pc))])
full_finalDf = pd.concat([full_newdf, df[['label']]], axis = 1)
print(full_finalDf)
print(full_newdf.shape)
这是我转置看不见的数据的代码
pca = PCA(n_components=0.99)
newdata_transformed = pca.transform(in_data)
pc = pca.explained_variance_ratio_.cumsum()
x1 = StandardScaler().fit(principalComponents)
X1 = x1.transform(newdata_transformed)
newdf = pd.DataFrame(data = X1
, columns = [f'pc_stdscaled_{i}' for i in range(len(pc))])
newdf.head()
【问题讨论】:
标签: python machine-learning pca data-preprocessing