2

インデックス0〜6を介してアクセスされる7セットのデータの配列があります。トレーニングには6つ、テストには1つを使用する必要があります。これらは、このように7つの組み合わせが達成されるまで循環させる必要があります。

トレーニング-0、1、2、3、4、5テスト-6

トレーニング-1、2、3、4、5、6テスト-0

トレーニング-2、3、4、5、6、0テスト-1

...。

トレーニング6、0、1、2、3、4、テスト-5

トレーニングデータはintのキューのキューになり、テストはintのキューになります。私の脳は揚げられています私は必死に助ける必要があります。私は単にそれらをハードコーディングすることに頼りましたが、それは恐ろしいように見えます、そして私が持っているセットの量を変更したいなら、それは書き直しを必要とします。

モジュロを使用した多くの答え!、私は偶数を見つけるためにそれを使用しただけです:)それがあなたのすべてのgettin賛成票を機能させるかどうか私は今テストしています

素晴らしい答えがたくさん!君たちは最高です!:D

4

5 に答える 5

2

Moduloはここであなたの友達です。

for(int i = 0; i < set.Length; i++)
{
    for(int j = 0; j < set.Length - 1; j++)
    {
        // Do something with ... set[(i+j)%set.Length];
    }
    // Test with set[(i+set.Length-1)%set.Length]
}
于 2012-05-16T14:09:34.830 に答える
1

単純なモジュラス演算で値がクリップされます。

for i in range(7):
  v = range(i, i+7)
  print [x % 7 for x in v[:-1]], v[-1] % 7
于 2012-05-16T14:09:54.130 に答える
1

疑似C#構文の場合:

int[][] alldata = [[/* training1 */], [ /*training2*/ ], [ /* training3 */ ]];
for (int i = 0; i < alldata.Length; i++)
{
    int[][] testdata = new int[][] { alldata[i] };
    int[][] traindata = alldata.Where((d, idx) => idx != i).ToArray();
    //Do your thing.
}
于 2012-05-16T14:11:24.177 に答える
1

データセットが正しいかどうかはわかりませんが、これはあなたが探しているものですか?

Queue<Int>[] data = new Queue<Int>[7]();
int current;
for(int i=0; i<7; i++) {
    current = i;
    for(int j=0; j<6; j++) {
        training[i].add(data[(current + j)%7]);
        current++;
    }
    testing[i] = data[(current + 6)%7];
}
于 2012-05-16T14:12:21.227 に答える
1

これを解決する方法は次のとおりです。

void IndicesCycling(int[] indexes, out Queue<Queue<int>> data, out Queue<int> test)
{
    data = new Queue<Queue<int>>();
    test = new Queue<int>();
    for (int i = 0; i < indexes.Length; i++)
    {
       test.Enqueue(indexes[i]);
       Queue<int> tmp = new Queue<int>();
       for (int j = 1; j < indexes.Length; j++)
       { 
           tmp.Enqueue(indexes[(i+j)%indexes.Length]);
       }
       data.Enqueue(tmp);
    }
}
于 2012-05-16T14:15:54.337 に答える