あなたが求めているのはデータモデル --i.e。で、MLアルゴリズムへの入力用にデータを設定する方法です。
ここでそれを行うための一つの方法だ - それを行うにはおそらく他の方法があるが、しかし、私は、これは動作します知っている:
ステップ1:(Eを設定し、データの各列をマッピング..g、document length)を連続変数の値または離散変数の 'factor'に置き換えます。例えば、「文書の長さ」は「総単語」として表すことができます。 OPで言及された他のものはそれほど単純ではないが、それでも困難ではない。例えば、「引用」はビット配列で表すことができる。これは、ML前処理でこのタイプのデータを処理するための一般的なパターンです。特に、配列内のすべての文書からすべての引用を集め、すべての記事のすべての引用を表すその配列から一意の値を取得します。その一意の値のセットの長さは、ビット配列の長さです。最初の文書で引用#1が存在する場合、インデックス0(ビット配列の最初の項目)のオフセットは "1"に設定されます(インデックス0のビット配列で "setbit"と呼びます)。
ステップ2:他columnns由来するデータからなる列を削除することを検討。非直交フィーチャはおそらくあなたのクラシファイアを混乱させます。核心:例えば、
ステップ3「マッチングゲシュタルトパターン」を取り除くを持つ各文書のデータベクトルのペアワイズ、エンド・ツー・エンドの連結によって設定された変換されたデータを作成します他のすべてのドキュメントのベクトルと一緒に。
>>> d1 = [0, 1, 0, 1, 1]
>>> d2 = [0, 0, 0, 1, 0]
>>> d12 = d1 + d2
ステップ4:クラスラベルを追加するには、100件の文書を持っている場合、あなたはあなたの変換されたデータセットで100^2のベクトル(実際には分類器に供給されたデータを)持っています(tarnsformedデータ内の連結ベクトルペアのそれぞれの末尾)。言い換えれば、2つの文書が一致している場合は、ベクトルの最後に「1」を付加します。一致しない場合は、 "0"を付加します。したがって、変換されたデータは、n 2個のデータベクトル(nは元のデータセットのサイズ)で構成され、各ベクトルは元のセットとクラスラベルの2つのデータベクトルのエンドツーエンド連結です。
>>> d12 = [0, 1, 0, 1, 1, 0, 0, 0, 1, 0]
ので、その後、D12に代表される文書ペアが一致とみなされているとします
>>> class_label_d12 = [1]
>>> d12 += class_label_d12
>>> d12
[0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1]
ステップ5:今、あなたのデータは、教師付き分類器への入力のための通常の形態であり、 。教師付き分類器(MLP、デシジョンツリーなど)を選択し、トレーニングデータを渡します。
申し訳ありませんが、私はあなたの_question_が何であるか把握していません。 – nodakai
ファジー比較が必要です。ファジー比較は、ドメインのヒューリスティックに依存します。あなたのドメインについて多く知っていなければ、それは非常に難しいでしょう9)ここで何か便利なことを言うには – inspectorG4dget
私が間違っていない限り、ゲシュタルトパターンのマッチングは、ファジーマッチングの一種です。私が望むのは、それをドキュメントの長さのような他の要素と組み合わせることです。 – mlissner