【问题标题】:How to process feature vectors with different dimension in machine learning?机器学习中如何处理不同维度的特征向量?
【发布时间】:2018-09-23 07:38:59
【问题描述】:

我是机器学习的初学者,我正在尝试使用数据集来训练对数线性分类器。数据集包含五个特征,每个特征都是一个向量,但特征的维度不同。尺寸分别为 3、1、6、2 和 2。我尝试使用 scikit-learn 将尺寸减小到 1 的 PCA 方法,但效果不佳。那么如何处理特征以拟合逻辑回归等对数线性分类器模型?

【问题讨论】:

标签: python-3.x machine-learning logistic-regression feature-extraction


【解决方案1】:

一个简单的方法就是扁平化你的所有特征。然后将其输入到您的分类器中。

一个例子:

features = [... 
          [[0, 1 3], [5], [2, 6, 4, 7, 8, 9], [1, 0], [0, 1]], #for one sample
          ...]

使用列表推导来展平特征内的每个列表:

flattened_features = [[i for k in f for i in k] for f in features]

这会将功能变成这样的:

    flattened_features
    [... 
    [0,1,3,5,2,6,4,7,8,9,1,0,0,1], #for one sample
    ...]

现在您可以将其转换为 numpy 数组并将其输入到您的模型中。

【讨论】:

  • 嗨 Primusa,这可能是一个幼稚的问题:扁平化特征后,我们将有一个如上所述的向量。这样做时,模型如何将所有这些单独的特征分开?不是和一个人一样吗?有没有其他方法来处理这些功能?
  • @hemanta 如果您使用上述方法,理想情况下模型将自行学习这些分组。有一些方法可以处理不同长度的特征 - 使用 sklearn 你可以尝试降维,但我不太确定它是否支持这些类型的输入。如果您愿意测试神经网络,它们可以支持这些类型的输入,但最终您仍将在网络中以某种方式合并它们,但初始状态由网络查看和处理。
  • 嗨 Primusa,非常感谢您的解释。我问这个是因为我有两个不同大小的特征矩阵,一个是 4X61,第二个是 6X3。现在我想从这两个中制作一个特征向量。正如您所提到的,我可以将它们展平并为每个获取 flatten_tensor。现在将它们连接起来并用作单个特征向量是否很好,或者还有其他方法,例如您建议的池化?但是,我还不知道如何执行池化。再次感谢您的澄清。
  • 取决于你的模型试图做什么,不同的合并类型做不同的事情,见stackoverflow.com/questions/49990882/…
猜你喜欢
  • 2013-06-23
  • 2017-03-16
  • 1970-01-01
  • 2019-01-03
  • 2013-12-05
  • 1970-01-01
  • 2019-09-29
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多