0

私は2つの配列を持っています最初の配列には多数の単語があります、私は最初の配列よりも小さい2番目の配列を持っており、最初の配列で発生しているいくつかの単語があります。最初の配列の語順に基づいて2番目の配列を並べ替える必要があります。

元:-

firstarray = ["a","c","b"...];
2ndarray = ["b","c"...];

2ndarrayaftersort = ["c","b"];

SVM分類では、最初の配列は特徴ベクトルで、2番目の配列は重みベクトルです。

または、文字列を並べ替える必要があります...

"0 35:1 44:1 10:1 45:1 46:1 4:1 47:1 18:1 48:1 49:1 50:1 51:1 52:1 53:1 54:1 55:1 56:1 57:1 58:1 59:1 60:1 61:1 62:1 6:1 63:1 64:1 65:1 66:1 67:1 19:1 68:1 69:1 70: 1 71:1 "

上記の文字列では、44:1の後に10:1が発生していることがわかります...機能がソートされていることを確認する必要があります。そうしないと、Libsvmが正しく分類されません。

ありがとう。

4

1 に答える 1

2

いずれの場合も、2つの文字列を比較するカスタムの方法が必要です。最初のケースでは、最初の配列が実際にはかなり大きいと仮定してDictionary<string, int>、適切なインデックスを効率的に見つけることができるように、配列をに変換することをお勧めします。次に、対応するインデックス値を見つけてそれらを比較するだけで、2つの文字列を比較します。

2番目のケースでは、値を2つの文字列に分割し、両方を整数に解析して、それらの値を比較する必要があります。文字列の配列を、比較しやすい解析済みの値のコレクションに変換し、並べ替えてから、値を文字列に変換し直すことができますこれにより、比較ごとに個別に解析する必要がなくなります。

IComparer<T>カスタムまたはComparison<T>をに渡すことで、配列を並べ替えることができますArray.Sort

于 2011-04-17T06:40:42.707 に答える