【问题标题】:How can I divide/split up a matrix by rows between two other matrices?如何在其他两个矩阵之间按行划分/拆分矩阵?
【发布时间】:2011-03-22 00:00:16
【问题描述】:

我有一个矩阵和一个向量,每个都有 3000 行:

fe = [-0.1850   -0.4485; ...
      -0.2150    2.6302; ...
      -0.2081    1.5883; ...
      -0.6416   -1.1924; ...
      -0.1188    1.3429; ...
      -0.2326   -2.2737; ...
      -0.0799    1.4821; ...
      ... %# lots more rows
      ];

tar = [1; ...
       1; ...
       2; ...
       1; ...
       2; ...
       1; ...
       1; ...
      ...  %#lots more rows
      ];

我想将fetar 的行分开,以便将其中的2/3 放入一组变量中,将剩余的1/3 放入第二组变量中。这是出于分类目的(即一组是训练数据,另一组是测试数据)。

我有两种可能的方法来做到这一点:

  • 按顺序拆分行,前 2/3 在一个矩阵中,最后 1/3 在另一个矩阵中。
  • 随机选择 2/3 的行并将其分配到一个矩阵中,并将剩余的行放在另一个矩阵中。

如何实施这些解决方案?

【问题讨论】:

    标签: matlab matrix split row partitioning


    【解决方案1】:

    假设您需要选择 2/3 的行和两列,您可以这样做

    feTrain=fe(1:2000,:);
    feTest=fe(2001:end,:);
    

    如果您想分配随机选取的行的 2/3(即,不是前 2/3),您可以使用 randperm 函数生成行索引的随机排序并将其用于索引。

    nRows=size(fe,1);
    randRows=randperm(nRows);%# generate random ordering of row indices
    feTrain=fe(randRows(1:2000),:);%# index using random order
    feTest=fe(randRows(2001:end),:);
    

    【讨论】:

    • 请问feTrain如何使用Scatter,(feTrain有2列)
    • scatter 将 2 个向量作为输入。所以要绘制第一列与第二列,请执行scatter(feTrain(:,1),feTrain(:,2))
    猜你喜欢
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多