問題タブ [ensemble-learning]

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 に答える
775 参照

python - sklearn の plot_partial_dependence が表示されない

で提案されているようにコードを書き留めましたが、次のコードには何も表示されません。

私は何を間違っていますか?

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

r - 訓練されたキャレットオブジェクトを使用して新しいデータを予測する方法 (訓練中は使用されません)?

パッケージを使用しcaretて、トレーニング データセットでランダム フォレスト モデルをトレーニングしています。私は 10 倍の交差検証を使用して、オブジェクトを取得しましたrandomForestFit。このオブジェクトを使用して、新しいデータセットを予測したいと思いますtest_data。また、それぞれのクラスの確率を取得したいと考えています。どうすればいいですか?

私はextractProb次のように機能を使用しています:

しかし、それは私に予期しない結果をもたらしています。

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

matlab - MatlabのPartitionedEnsembleモデルで新しいデータ(テストセット)のラベルを予測する方法は?

Matlab 2014a の関数fitensemble()によって、バイナリ分類問題のアンサンブル モデル (RUSBoost) をトレーニングしました。この関数によるトレーニングは、関数fitensemble()の入力パラメーター "kfold" を介して 10 倍の交差検証が実行されます。

しかし、 predict(model, Xtest)を使用すると、この関数によってトレーニングされた出力モデルを使用して新しいデータのラベルを予測することはできません。Matlab のドキュメントを確認したところ、kfoldPredict()関数を使用してトレーニング済みモデルを評価できることがわかりました。しかし、この関数による新しいデータの入力は見つかりませんでした。また、クロスバリデーションを使用してトレーニングされたモデルの構造は、クロスバリデーションを使用しないモデルとは異なることがわかりました。では、クロス検証でトレーニングされたモデルを使用して、新しいデータのラベルを予測する方法を教えてください。ありがとう!

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

scikit-learn - How to change the function a random forest uses to make decisions from individual trees?

Random Forests use 'a multitude of decision trees at training time and outputting the class that is the mode of the classes (classification) of the individual trees'.

Is there a way to, instead of using the class that is the mode, run another random forest on the outputs produced by the original trees?

Bonus question: is there a reason why this is a bad idea? (as I'm sure people will have thought of this before)

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

python-2.7 - scipy.minimize 'SLSQP' は最適でない重み値を返すようです

ログロス値のアンサンブルに対して最小化関数を実行しようとしていますが、scipy.minimize 関数を使用すると、最適でない値を返すように見えます。

データは pandas テーブルにあります。

クリック、prob1、prob2、prob3

0、0.0023、0.0024、0.012

1、0.89、0.672、0.78

0、0.43、0.023、0.032

デバッグを支援するために、関数内で以下を返す print ステートメントを使用しました。

0.0101326509533 重み := [1.0.0.]

0.0101326509533 重み := [1.0.0.]

0.0101326509702 重み := [ 1.00000001 0. 0. ]

0.0101292476389 重み := [ 1.00000000e+00 1.49011612e-08 0.00000000e+00]

0.0101326509678 重み := [ 1.00000000e+00 0.00000000e+00 1.49011612e-08]

0.0102904525781 重み := [ -4.44628778e-10 1.00000000e+00 -4.38298620e-10]

0.00938612854966 重み := [ 5.00000345e-01 4.99999655e-01 -2.19149158e-10]

0.00961930211064 重み := [ 7.49998538e-01 2.50001462e-01 -1.09575296e-10]

0.00979499597866 重み:= [ 8.74998145e-01 1.25001855e-01 -5.47881403e-11]

0.00990978430231 重み:= [9.37498333e-01 6.25016666e-02 -2.73943942e-11]

0.00998305685424 重み:= [ 9.68748679e-01 3.12513212e-02 -1.36974109e-11]

0.0100300175342 重み := [ 9.84374012e-01 1.56259881e-02 -6.84884901e-12]

0.0100605546439 重み := [ 9.92186781e-01 7.81321874e-03 -3.42452299e-12]

0.0100807513117 重み := [ 9.96093233e-01 3.90676721e-03 -1.71233067e-12]

0.0100942930446 重み := [ 9.98046503e-01 1.95349723e-03 -8.56215139e-13]

0.0101034594634 重み := [ 9.99023167e-01 9.76832595e-04 -4.28144378e-13]

0.0101034594634 重み := [ 9.99023167e-01 9.76832595e-04 -4.28144378e-13]

0.0101034594804 重み:= [ 9.99023182e-01 9.76832595e-04 -4.28144378e-13]

0.0101034593149 重み := [ 9.99023167e-01 9.76847497e-04 -4.28144378e-13]

0.010103459478 重み := [ 9.99023167e-01 9.76832595e-04 1.49007330e-08]

重みの合計は 0.0101 になります。

[ 9.99023167e-01 9.76832595e-04 -4.28144378e-13]

私の予想では、返される最適な重みは次のようになります。

誰でも明白な問題を見ることができますか?

参考までに -> このコードは実際には kaggle otto スクリプトのハックです https://www.kaggle.com/hsperr/otto-group-product-classification-challenge/finding-ensamble-weights

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

scikit-learn - sklearn、ExtraTreesClassifier のスコアリングが混乱

私は 2 つの不均衡なクラス、50,000 のサンプルを持っており、陽性はセットで %5 発生します。データは 2 次元です。

問題は、ExtraTreesClassifierを使用していることです。oob_score_は問題ないように見えますが、cross_validation.cross_val_scoreでf1 スコアを調べると、低い値が得られます。分類子が問題ないかゴミか、完全に混乱しています。

0.919955 0.919353 0.919353 ... 増加しています。

私がするとき

結果は array([ 0.01604747, 0.01250169]) で、かなり悪いです。

誰かが私を啓発できますか?前もって感謝します。

0 投票する
0 に答える
52 参照

machine-learning - GradientBoostingRegression でのラベルの集約

Scikit-Learn の勾配ブースティング回帰アルゴリズムを理解しようとしています。私は彼らのソース コードをたどり、選択した損失関数に基づくツリーの反復的な構築をよく理解しました。私が答えを理解できなかったのは、私が呼び出したときに、基礎となるすべての推定器からラベルの平均をどのように取るのかということです。 predict()

その関数呼び出しをこの行までたどりました。ここでは、 scale が保持 learning_rate されます。指定されていない場合、デフォルトで 0.1 になります。したがって、500 本の木を使用するとしたら、特定のサンプルに対して 500 本の異なるラベルのそれぞれに 0.1 を掛ける理由がわかりません。

誰かがこれを詳細に説明している公開された論文に私を導くことができれば、それは大歓迎です.

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

machine-learning - SAMME.R AdaBoost アルゴリズムの estimator_weight が 1 に設定されている理由

私はAdaBoostアルゴリズムが初めてです。sklearn SAMME アルゴリズムの _boost_discrete()、分類子の重みを「estimator_weight」として返します

しかし、SAMME.Rアルゴリズムの場合、"_boost_real()" は推定量の重みを返す代わりに '1' を返します。

私の質問は、SAMME.R アルゴリズムが estimator_weight を「1」として返す理由です。私は参考文献 [1] に従います。アルゴリズムを理解するのを手伝ってください。前もって感謝します。

参照: [1] J. Zhu、H. Zou、S. Rosset、T. Hastie、「マルチクラス AdaBoost」、2009 年。