Scikit-Learn デシジョン ツリーからのデシジョン ルールの抽出
広く使用されている機械学習アルゴリズムであるデシジョン ツリーは、意思決定をモデル化することで洞察を提供しますプロセスはルールの階層構造として扱われます。ただし、これらの決定ルールを明示的に抽出するのは困難な場合があります。この記事では、トレーニングされた Scikit-Learn デシジョン ツリーからテキストのデシジョン ルールを抽出するための包括的なアプローチについて概説します。
デシジョン ルール抽出用の Python コード
次の Python コード スニペットは、 Scikit-Learn デシジョン ツリーの基礎となるデータ構造をトラバースして、人間が判読できるデシジョン パスを生成します:
from sklearn.tree import _tree def tree_to_code(tree, feature_names): tree_ = tree.tree_ feature_name = [ feature_names[i] if i != _tree.TREE_UNDEFINED else "undefined!" for i in tree_.feature ] print("def tree({}):".format(", ".join(feature_names))) def recurse(node, depth): indent = " " * depth if tree_.feature[node] != _tree.TREE_UNDEFINED: name = feature_name[node] threshold = tree_.threshold[node] print("{}if {} <= {}:".format(indent, name, threshold)) recurse(tree_.children_left[node], depth + 1) print("{}else: # if {} > {}".format(indent, name, threshold)) recurse(tree_.children_right[node], depth + 1) else: print("{}return {}".format(indent, tree_.value[node])) recurse(0, 1)
有効な Python 関数の作成
このコードは、ツリーを再帰的に実行し、各条件付き分割としきい値を出力します。結果は、トレーニングされたデシジョン ツリーの意思決定プロセスを効果的にエミュレートする有効な Python 関数です。
出力例
たとえば、次のようなツリーを考えてみます。入力である 0 から 10 までの数値を返します。生成された 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.]]
利点と注意
このメソッドは、明確な機能と注意点を提供します。ツリーの決定ルールのテスト可能な表現。ただし、コードではツリー内の各ノードが二分決定ノードであると想定していることに注意してください。デシジョン ツリーに非バイナリ デシジョン ノードが含まれている場合は、それに応じてコードを調整する必要があります。
以上がScikit-Learn デシジョン ツリーからデシジョン ルールを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。