問題タブ [pruning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1508 参照

java - JAVA: ディシジョン ツリーの剪定

決定木を剪定する関数を書いています。この関数は、「インスタンス配列の長さ」が指定された入力長よりも小さいツリー内のノードを削除する必要があります (このディシジョン ツリーには、値の配列を保持するノードが保持されます)。私の問題 (私が思うに) は、このメソッドにノード参照を渡してから、関数内の任意のノードに null を割り当てても、これらのノードがグローバルに削除されないことです。ローカル参照を削除するだけです。ここに私が書いたコードがあります:

インスタンス配列の長さが入力の長さ l より小さいノードがツリーから完全に削除されるように、このコードを別の方法で記述するにはどうすればよいですか?

編集 これはノードクラスのヘッダーです。関連情報のようです:

0 投票する
1 に答える
1508 参照

python-2.7 - Python 辞書 - しきい値を下回るリーフ ノードの統合

dict()以下は、私が Python でトレーニングした決定木 ( ) の簡単な例です。

リーフ ノード (ボックス) 内の数字は、そのノードにクラス ラベル (TRUE など) が表示される確率を表します。視覚的には、ツリーは次のようになります。

ここに画像の説明を入力

親ノードよりも値が小さいノードを統合する、一般的なポストプルーニング アルゴリズムをコーディングしようとしています。0.3したがって、しきい値を使用して結果として得られるツリーは、0.3プロットすると次のようになります。

ここに画像の説明を入力

Income2 番目の図では、 のノードAge<18がルート ノードに統合されていることに注意してくださいAge。そして、 すべてのリーフ ノード (複数のレベル) の合計が 0.3 未満であるため、Age=36-55, Marital_Stausは に統合されました。Age

これは私が思いついた不完全な疑似コードです (これまでのところ):

これは何度も解決されるべきだったと思うので、質問を投稿したかったのです。

ありがとうございました。

PS: 最終結果を分類に使用するつもりはありません。

0 投票する
1 に答える
1430 参照

sql - in状態でのOracle強制パーティション・プルーニング

MY_ID (値が 1,2,3,5,8...1100 の整数)、RUN_DATE (過去数日) の順序で 2 つの列にリスト パーティションを含むテーブルがあります。

私のクエリは

以下の EXPLAIN PLAN を使用して、完全なテーブル スキャンを実行します。

テーブル全体をスキャンするのではなく、特定のパーティションのみにアクセスするように強制するにはどうすればよいですか?

申し訳ありませんが、私はOracleのヒントに慣れていないため、以前は特定の質問を見つけることができませんでした.

0 投票する
3 に答える
7911 参照

python - 決定木の剪定をサポートするためにsklearnをハッキング/クローン化しますか?

決定木を作成し、それを python で剪定したかったのです。ただし、sklearn 自体はプルーニングをサポートしていません。インターネット検索で、私はこれを見つけました :

しかし、ファイルの使い方がわかりません。私は試した:

しかし、エラー ValueError: Attempted relative import in non-package が表示されます。それは私がインポートする方法ではありませんか?別の方法でファイルを保存する必要がありますか? ありがとうございました。

0 投票する
1 に答える
749 参照

c++ - 最小平均体重サイクル - 直感的な説明

有向グラフでは、エッジの重みの平均が最も低いサイクルを探します。たとえば、長さ 2 の 1 から 2 へのパスと長さ 4 の 2 から 1 へのパスを持つノード 1 と 2 を持つグラフの最小平均サイクルは 3 になります。

複雑な方法 (Karp) を探しているのではなく、プルーニング ソリューションを使用した単純なバックトラッキングを探しています。説明は、「現在の実行中の平均が、見つかった最良の平均重量サイクル コストよりも大きい場合、重要な剪定を伴うバックトラックで解決可能」と示されています。

しかし、なぜこの方法が機能するのでしょうか。サイクルの途中で、重みが見つかった最良の平均よりも大きい場合、重みのエッジが小さいと、現在のサイクルが見つかった最良の平均よりも低くなる状況に到達する可能性はありませんか?

編集: ここにサンプルの問題があります: http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=2031

0 投票する
1 に答える
95 参照

mysql - MySQL InnoDB でパーティショニングを行うには、主キーを削除するか、テーブル データをリロードする必要がありますか?

いくつかのテーブルを日付範囲で分割する必要があります。これらのテーブルを分割するには、プライマリを削除するか、完全なデータを再ロードする必要がありますか?

一部のテーブルには、5,000 万行をはるかに超える行が含まれています。

これは私が使用しているスクリプトです。

0 投票する
1 に答える
637 参照

neo4j - reduce() の条件が満たされなくなった場合、Cypher トラバーサルを停止します

シンプルにするために、単一のノード タイプと単一のリレーションシップ タイプを持つ neo4j データベースがあるとします。すべての関係には「コスト」プロパティがあり (従来のグラフの問題と同様)、その値は負ではありません。

ここで、ID A のノードと ID B のノードの間のすべての可能なパスを見つけたいとします。パスの長さの上限 (10 など) を使用して、パスの合計コストが特定の定数 (20 など) 以下になるようにします。 .

これを実現する Cypher コードは次のとおりです (動作します)。

このクエリの問題は、コストが非負であるという事実を利用していないため、総コスト制限を超えるパスが削除される可能性があることです。代わりに、ノード A と B の間の長さ 0 から 10 までのすべての可能なパスをリストし (これは途方もなく高価になる可能性があります)、総コストを計算してから、制限を超えるパスを除外します。時間内にパスを剪定すると、パフォーマンスが大幅に向上します。

これは、BranchStates を使用し、関連する場合は拡張を防止することで、トラバーサル フレームワークで実行できることを知っていますが、Cypher ソリューションを見つけたいと思います (主にここで公開されている理由による)。

問題があれば、現在バージョン 2.2.2 を使用しています。

0 投票する
2 に答える
5104 参照

python - ランダム フォレストの剪定

私はsklearnランダムフォレストリグレッサーを持っています。これは 1.6 GB と非常に重く、値を予測する際に非常に長時間動作します。

剪定して軽くしたい。私が知っているように、決定木とフォレストには剪定が実装されていません。ツリーコードはCで書かれていてわからないので自分では実装できません。

誰かが解決策を知っていますか?