当我尝试减少数据维数时,值错误eps = 0.100000。这可能是什么原因?

时间:2018-11-03 18:29:50

标签: python machine-learning scikit-learn dimensionality-reduction

我正尝试将scikit的GaussianRandomProjection与形状为1599 x 11的数据集一起使用,如下所示:

transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(wine_data.values[:, :11])

执行此操作时,出现错误消息:

ValueError: eps=0.100000 and n_samples=1599 lead to a
target dimension of 6323 which is larger than the original 
space with n_features=1

我不明白该错误。这到底是什么意思?我该如何使用GaussianRandomProjection来降低数据量?

1 个答案:

答案 0 :(得分:0)

以下是GaussianRandomProjection上Scikit-Learn官方文档中参数n_components的直接引用:

  

目标投影空间的尺寸。

     

n_components可以根据数量自动调整   数据集中的样本以及由   约翰逊-林登斯特劳斯引理。在这种情况下,嵌入的质量   由eps参数控制。

     

应该指出的是,约翰逊-林登斯特劳斯引理可以产生   保守估计所需的组件数量   不对数据集的结构进行任何假设。

在您的情况下,估计器趋向于在“降低” 维数之后产生6323维投影目标。这显然是出乎意料的,因为您希望减小尺寸而不是增大尺寸。我建议您首先假定所需输出的尺寸(即8),然后测试模型是否按预期方式工作。

transformer = GaussianRandomProjection(n_components=8) #Set your desired dimension of the output
X_new = transformer.fit_transform(wine_data.values[:, :11])

祝你好运