一般的な落とし穴を回避しながら、Scikit-Learn デシジョン ツリーからデシジョン ルールをプログラムで抽出するにはどうすればよいでしょうか?

Mary-Kate Olsen
リリース: 2024-10-26 07:27:02
オリジナル
894 人が閲覧しました

How Can We Programmatically Extract Decision Rules from Scikit-Learn Decision Trees While Avoiding Common Pitfalls?

Scikit-Learn デシジョン ツリーからのデシジョン ルールの抽出

機械学習では、デシジョン ツリーは一般に、意思決定プロセスをキャプチャするために使用されます。決定ルールの形式。これらのルールはテキストのリストとして表すことができ、デシジョン ツリーの基礎となるロジックを明確に理解できます。

プログラムによるデシジョン ルールの抽出

Python 関数tree_to_code を使用すると、訓練されたデシジョンツリーからのデシジョンルールの抽出。トレーニングされたツリーと特徴名のリストを入力として受け取り、決定ルールを表す有効な Python 関数を生成します。

<code class="python">def tree_to_code(tree, feature_names):
    # ...</code>
ログイン後にコピー

生成された関数は、ネストされた if を使用して、決定ツリーと同じ構造を持ちます。 -else ステートメントは決定パスを表します。入力データが提供されると、関数は対応する出力を返します。

出力例

入力 (0 から 10 までの数値) を返そうとするデシジョン ツリーの場合)、生成されるコードは次のようになります。

<code class="python">def tree(f0):
  if f0 <= 6.0:
    if f0 <= 1.5:
      return [[ 0.]]
    else:  # if f0 > 1.5
      if f0 <= 4.5:
        if f0 <= 3.5:
          return [[ 3.]]
        else:  # if f0 > 3.5
          return [[ 4.]]
      else:  # if f0 > 4.5
        return [[ 5.]]
  else:  # if f0 > 6.0
    if f0 <= 8.5:
      if f0 <= 7.5:
        return [[ 7.]]
      else:  # if f0 > 7.5
        return [[ 8.]]
    else:  # if f0 > 8.5
      return [[ 9.]]</code>
ログイン後にコピー

他のアプローチの制限

デシジョン ツリーからデシジョン ルールを抽出する際の一般的な落とし穴には次のものがあります。

  • リーフ ノードの識別に誤って Tree_.threshold == -2 を使用する (必ずしも信頼できるわけではない)
  • 再帰関数に不要な複数の if-else ステートメントが含まれる
  • リーフが原因でクラッシュする特徴値 -2
を持つノード

以上が一般的な落とし穴を回避しながら、Scikit-Learn デシジョン ツリーからデシジョン ルールをプログラムで抽出するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!